Numpy库常用操作

创建数组常用方式:

np.arange(n) 返回一个0到n-1的数组
np.ones(shape) shape为元组(行, 列),元素全部为1
np.zeros(shape) 元素全部为0
np.full(shape, val) 元全为val值
np.eye(n) 创建一个正方的n*n单位矩阵,对角线全为1其余为0
np.linspace(b, e, n) 根据起始值等间距的填充数据,返回数组

import numpy as np
print(np.arange(10))    # [0 1 2 3 4 5 6 7 8 9]
print(np.ones((2, 4)))
"""[[1. 1. 1. 1.]
 [1. 1. 1. 1.]]"""
print(np.zeros((4, 4)))
"""
[[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]
"""
print(np.full((3, 2), 10))
"""
[[10 10]
 [10 10]
 [10 10]]
"""
print(np.eye(3))
"""
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]
"""
print(np.linspace(1, 3, 10))
"""
[1.         1.22222222 1.44444444 1.66666667 1.88888889 2.11111111
 2.33333333 2.55555556 2.77777778 3.        ]
"""

获取数组对象的属性
dim 获取维度
shape 获取数组的行数,列数
size 获取元素的个数,即: 行 * 列
dtype 元素的类型

import numpy as np
n = np.array([[1, 2, 3, 4], [6, 7, 8, 9]])
print(n.ndim)  # 2
print(n.shape)  # (2, 4)
print(n.size)   # 8
print(n.dtype)  # int32

genfromtxt函数
传入的参数为:要打开的文档名称,分隔符,编码格式,以什么类型存储

import numpy as np
tmp = np.genfromtxt("1.txt", delimiter=",",encoding="UTF-8", dtype=str)
print(tmp)
""" ['核桃核' '不能吞下去' '核桃核太大了,吞下去容易噎着'] """

== 运算

import numpy as np
a = np.array([5, 10, 15, 20])
equal_to_ten = (a == 10)
print(a[equal_to_ten])    # [10]

&, | 运算

import numpy as np
a = np.array([3, 5, 7, 9])
equal_to_ten_or_five = (a == 3) | (a == 7)
print(a[equal_to_ten_or_five])  # [3 7]

astype函数,将矩阵中的元素都修改成指定的类型

import numpy as np
a = np.array([3, 5, 7, 9])
print(a.dtype)    # int32
a = a.astype(str) 
print(a.dtype)    # <U11

Numpy库常用的统计函数

函数名 函数说明
min(axis) 得出矩阵中的最小值 ,axis=0,表示按列计算,axis=1: 表示按行计算
max(axis) 得出矩阵中的最大值 ,axis=0,表示按列计算,axis=1: 表示按行计算
sum(axis) 得出矩阵中的元素的和值 ,axis=0,表示按列计算,axis=1: 表示按行计算,不指定代表所有元素和
mean(a,axis=None) 计算期望值
average(a,axis=None,weights=None) 计算加权平均值
std(a,axis=None) 计算标准差
var(a,axis=None) 计算方差
ptp(a) 计算最大值和最小值的差值
median(a) 计算中位数

例如:

import numpy as np
a = np.array([[3, 5, 7, 9],[10, 11, 12, 13]])
print(a.sum())    # 70
print(a.sum(axis=1))    # [24 46] 行
print(a.sum(axis=0))     # [13 16 19 22]   列
print(a.min(axis=1))    # [ 3 10] 行
print(a.min(axis=0))     # [3 5 7 9]   列

数组运算
计算在这里插入图片描述Numpy库的随机数函数
在这里插入图片描述矩阵的运算

import numpy as np
a = np.array([[1, 1],[0,1]])
b = np.array([[2, 0],[3, 4]])
print(a * b)    # 对应元素相乘
"""
[[2 0]
 [0 4]]
"""
print(a.dot(b))    # 矩阵算法
"""
[[5 4]
 [3 4]]
"""

ravel()函数
将矩阵转成一行n*m的一维矩阵

import numpy as np
a = np.array([[1, 1], [0, 1], [3, 4]])
print(a.ravel())    #  [1 1 0 1 3 4]
print(a.T)  #  转置
"""
[[1 0 3]
 [1 1 4]]
"""
print(a.reshape(6, -1))    # eshape只要有一个参数确定,另一个参数就确定了,所以另一个参数如果你懒得算,直接写-1,python会自动计算另一个维度是多少 

hstack()与vstack(): 将两个矩阵进行拼接
hstack() 两个矩阵横着拼接
vstack() 两个矩阵竖着拼接

import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
print(np.hstack((a, b)))
"""[[1 2 5 6]
 [3 4 7 8]]"""
print(np.vstack((a, b)))
"""[[1 2]
 [3 4]
 [5 6]
 [7 8]]"""

hsplit()和vsplit()函数: 将矩阵进行分割

import numpy as np
a = np.array([[1, 2, 3, 4, 5, 6, 7, 8], [9, 10, 11, 12 ,13, 14, 15, 16]])
print(np.hsplit(a, 4))
print(np.hsplit(a, (3, 4)))
print(np.vsplit(a, 2))

矩阵的复制
其实就是python赋值的引用

import numpy as np
a = np.arange(8)
b = a
b.shape = 2, 4
print(a.shape)    # (2, 4)
print(id(a))    # 2197209465600
print(id(b))     # 2197209465600

使用View()的方式进行复制,其实是个浅复制,当修改副本矩阵的元素时,原矩阵相应位置元素也会改变.

import numpy as np
a = np.arange(8)
# view()的方式复制
b = a.view()
b.shape = 2, 4
b[0, 0] = 9
print(a[:1])    # 9

使用copy()方式进行复制,当修改副本矩阵的元素时,原矩阵相应位置元素不会改变.

import numpy as np
a = np.arange(8)
# copy的方式复制
b = a.copy()
b.shape = 2, 4
b[0, 0] = 9
print(a[:1])    # 0

argmax()函数获取矩阵最大值的下标,argmax(axis=0)表示按列寻找,argmax(axis=1)表示按行寻找

import numpy as np
a = np.arange(8)
print(a.argmax())   # 7

tile()函数 tile(data,(n,m)),将data矩阵扩展n行m列个

import numpy as np
a = np.arange(10, 40, 20)
print(np.tile(a, (2, 2)))

sort()函数

import numpy as np
a = np.array([[1, 7, 5],[1, 2, 1]])
b = np.sort(a, axis=1)
print(b)
原文地址:https://www.cnblogs.com/zhouzetian/p/13380548.html