一.用法及示例:
numpy.array–>创建一个向量或者矩阵
np.shape()–>获得当前矩阵维度
np.argmax()–获得当前最大值所在索引
np.max()–>最大值
np.min()–>最小值
np.mean()–>平均值
np.dtype()–>返回数组中的数据类型
np.size()–>返回数组中元素个数
b[1, 1]–>矩阵按照行和列获取元素
示例:
a = [1, 2, 4, 3]#向量
b = np.array(a)#将原向量转换为数组
对数组中指定行或列求和:np.sum()
matrix = np.array([
[5, 10, 15],
[20, 25, 30],
[35, 40, 45]
])
matrix.sum(axis = 1)#-->按照指定维度axis = 1按照行计算,axis = 0代表按照列计算
矩阵进行切片[:,:]
vector = [1, 2, 4, 3]
print(vector[0:3])
matrix = np.array([[5, 10, 15], [20, 25, 30], [35, 40, 45]])
print(matrix[:,0:2])#取出所有行的前两列
对数组元素类型进行转换–>np.astype()
vector = np.array([5, 10, 15, 20])
vector = vector.astype(float)
print(vector)
常用函数
(1)reshape函数–变换矩阵维度
zero_fifteen = np.arange(15)#默认生成顺序自然数列
a = zero_fifteen.reshape(3, 5)
print(a, '\n', a.shape)
(2)初始化矩阵为全0或者1
zeros = np.zeros((3, 4))#将一个三行四列的矩阵初始化为全0矩阵
ones = np.ones((2, 3))#两行三列矩阵初始化为全1矩阵
print(zeros, '\n', ones)
(3)构造序列
gouzao = np.arange(10, 30, 2)
print(gouzao)
(4)random模块–random和randint函数
random_zo = np.random.random((2, 3))
randint_zo = np.random.randint(0, 3, size = (2, 3))
print(randint_zo, random_zo)
(5)linspace模块–>起始值和终止值之间等分为x份
from numpy import pi
np_linspace = np.linspace(0, 2*pi, 100)
print(np_linspace)
(6)矩阵乘法
A = np.array([[1, 1], [0, 1]])
B = np.array([[2, 0], [3, 4]])
print(A * B)#执行标量乘法
print(np.dot(A, B))#执行矩阵乘法
(7)以e为底数的运算和开根运算
C = np.arange(3)
print(np.exp(C))#e的B次方
print(np.sqrt(C))
(8)floor–向下取整
D = np.floor(10 * np.random.random((3, 4)))#random只能生成0-1范围内的随机数
print(D)
print(D.T)#打印D的转置矩阵
(9)拼接数据–hstack和vstack
a = np.floor(10 * np.random.random(2, 2))
b = np.floor(10 * np.random.random(2, 2))
print(np.hstack(a, b))#横向拼接
print(np.vstack(a, b))#纵向拼接
(10)矩阵切分–hsplit和vsplit
a = np.floor(10 * np.random.random((3, 9)))
b = np.hsplit(a, 3)#按列分为3部分
c = np.vsplit(a, 3)#按行分为3部分
print(b, c)
(11)矩阵数值排序–sort根据矩阵数值排序和argsort根据索引值进行排序
c = np.array([[4, 3, 5], [1, 2, 1]])
d = np.sort(c, axis = 1)#axis=1代表按行从小到大排序
c = c[0,:]
e = np.argsort(c)#argsort方法得到元素从小到大的索引值
print(e)
print(c[e])
一.特定数组创建的方法:
方法名 | 写法或者示例 |
---|---|
zeros() | np.zeros(3)创建一个3元素的一维全0数组 |
ones() | np.ones(5)创建一个5元素的一维全1数组 |
arange() | np.arange(start, end, step)创建等间隔数组 |
linspace() | np.linspace(start, end, parts)将end-start划分为parts份 |
random() | np.random(3)默认在0-1内选择随机数创建3元素一维数组 |
二.基本运算
方法名 | 算例或者用法 |
---|---|
标量相乘 | a * b同型数组进行相乘 |
矩阵积 | a.dot(b)或者dot(a, b)或者np.dot(a, b)进行矩阵数乘 |
数组的平均值 | a.mean() |
数组标准差 | a.std() |
三.数组的遍历:
方法名 | 算例及用法 |
---|---|
apply_along_axis | apply_along_axis(聚合函数, 对哪条轴进行迭代操作,数组名) |
例子:
A = np.arange(10, 19, 1).reshape(3, 3)
A_0 = np.apply_along_axis(np.mean, axis = 0, arr = A)#对每一列求均值
A_1 = np.apply_along_axis(np.mean, axis = 1, arr = A)#对每一行求均值
>>>print(A_0, '\n',A_1)
[13. 14. 15.]
[11. 14. 17.]
四.数组形状变换:
方法名 | 算例或者用法 |
---|---|
reshape() | reshape(3,3)将原数组变为3*3的二维数组,而原数组形状不变 |
shape | a.shape = (3, 4)将原数组变为3*4的二维数组,原数组随之发生改变 |
ravel() | a.ravel()将原数组变为一维数组,原数组形状不变 |
transpose() | a.transpose()实现a数组的矩阵转置效果 |
五.数组的操作:
方法名 | 用法 |
---|---|
连接数组 | |
vstack() | np.vstack((a, b))a与b按行进行连接 |
hstack() | np.hstack((a, b))a与b按照列进行连接 |
column_stack | np.column_stack((a, b, c))把一维数组作为列压入栈结构 |
row_stack | np.row_stack((a, b, c))把一维数组作为行压入栈结构 |
数组切分 | |
vsplit() | [A, B] = np.hsplit(C, 2)把C垂直切分为两个数组 |
hsplit() | [A, B] = np.hsplit(C, 2)把C水平切分为两个数组 |
split() | [A1, A2, A3] = np.split(A, [1, 3], axis = 1)假设A有4列,即A1为第1列,A2为2,3列,A3为第4列; axis = 1索引为列索引,axis = 0索引为行索引 |
六.数组数据文件的读写:
方法名 | 用法 |
---|---|
save() | np.save(文件名,数组名)以二进制方式保存数据 |
load() | np.load(文件名)从二进制文件中读取数据 |
genfromtext() | np.genfromtxt(文件路径,delimiter = ‘,’, names = True)从.csv后缀格式的文件中读取数据 |