1.delete()函数
#numpy.delete(arr,obj,axis=None)
#axis 表明哪个维度的向量应该被移除
#axis 如果为None,则需要先将矩阵拉平,在删去第obj的元素
#obj 表明axis维度的哪一行(或列)应该被移除。
代码示例:
import numpy as np matrix = [ [1,2,3,4], [5,6,7,8], [9,10,11,12] ] p1 = np.delete(matrix, 1, 0) # 第0维度(行)第1行被删除(初始行为0行) print('>>>>p1>>>>\n',p1) p2 = np.delete(matrix, 1, 1) # 第1维度(列)第1行被删除 print('>>>>p2>>>>\n',p2) p3 = np.delete(matrix, 1) # 拉平后删除第1个元素(初始为第0个) print('>>>>p3>>>>\n',p3) p4 = np.delete(matrix, [0,1], 1) # 第1维度(列)第0、1行被删除 print('>>>>p4>>>>\n',p4)
结果:
2.insert()函数
#numpy.insert(arr,obj,value,axis=None)
#value 为插入的数值
#arr 为目标向量
#obj 为目标向量的axis维度的目标位置
#axis 为想要插入的维
代码示例:
import numpy as np matrix = [ [1,2,3,4], [5,6,7,8], [9,10,11,12] ] q1 = np.insert(matrix, 1, [1,1,1,1], 0) # 第0维度(行)第1行添加[1,1,1,1] print('>>>>q1>>>>\n',q1) q2 = np.insert(matrix, 0, [1,1,1], 1) # 第1维度(列)第0列添加1,1,1 print('>>>>q2>>>>\n',q2) q3 = np.insert(matrix, 3, [1,1,1,1], 0) # 第0维度(行)第3行添加[1,1,1,1] print('>>>>q3>>>>\n',q3)
结果:
3.append()函数
#numpy.append(arr,values,axis=None)
#将values插入到目标arr的最后,其中values与arr应该有相同维度
代码示例:
import numpy as np matrix = [ [1,2,3,4], [5,6,7,8], [9,10,11,12] ] m1 = np.append(matrix,[[1,1,1,1]],axis=0) #第0维度(行)尾部添加[[1,1,1,1]],注意两个[],相同维度 print('>>>>m1>>>>\n',m1) m2 = np.append(matrix,[[1],[1],[1]],axis=1) #第1维度(列)尾部添加[[1],[1],[1]],注意两个[],相同维度 print('>>>>m2>>>>\n',m2) m3 = np.append(matrix,[1,1,1,1]) #拉平后再尾部添加[1,1,1,1],这里可以[[1,1,1,1]]和[1,1,1,1]均可 print('>>>>m3>>>>\n',m3)
结果:
4. np.random.choice(a, size, replace, p)
其作用是按要求生成一个一维数组
a是生成一维数组的来源,可以是int类型,可以是数组,也可以是list
size 数组的维度replace 表示从a中是否不重复抽取,默认可重复 p 给出抽取概率,默认随机
注意 :这里是围绕数组展开的,如果提取的也是list,可以用 from random import choice 的 choice,可用 from random import sample 随机抽取一组元素
代码示例:
import numpy as np a1 = np.random.choice(7,5) # 从0~7中随机选择5个数组成一维数组 print(a1) a2 = np.random.choice([0,1,2,3,4,5,6],5) # 从给定list中随机选择5个数组成一维数组 print(a2) a3 = np.random.choice(np.array([0,1,2,3,4,5,6]),5) # 将list换成array数组依然可以运行,效果一致 print(a3) a4 = np.random.choice([0,1,2,3,4,5,6],5,replace=False) # 上述均有重复,将replace设置为False,即可按要求没有重复的选取 print(a4) a5 = np.random.choice(np.array([0,1,2,3,4,5,6]),5,p=[0.1,0.1,0.1,0.1,0.1,0.1,0.4]) #给出选取概率p,注意p的维度和a的维度一致,并且p中概率和为1 print(a5)
结果:
5.np.argmax(a, axis=None, out=None)
作用是返回轴的最大值的索引值
a:需要操作的数组或者矩阵,默认情况拉平成数组
axis:默认将a拉平,当axis=0对a按列取最大值索引,axis=1则对a按行取最大值索引
out:将结果写到a中
代码示例:
import numpy as np a = np.array([[1,1,1],[2,2,2],[0,3,6]]) print(a) b1 = np.argmax(a) # 将数组a拉平,最大值索引为9(初始索引为0) print(b1) b2 = np.argmax(a, axis=0) # 按列选取最大值的索引 print(b2) b3 = np.argmax(a, axis=1) # 按行选取最大值的索引 print(b3)
结果:
6.numpy.linspace用法
numpy.linspace(start, shop, num==50, endpoint=True, retstep=False, dtype=None)
在指定间隔start到stop内返回均匀间隔的数组。
返回num均匀分布的样本,在[start, stop],默认生成50个数据
endpoint, 如果是真,则一定包括stop,如果为False,一定不会有stop
retstep,是否显示步长信息
代码示例:
import numpy as np y1 = np.linspace(-10.0,10.0) # 默认生成50个数据 print(y1) y2 = np.linspace(1,10,10) # 生成10个数据,包括首尾 print(y2) y3 = np.linspace(1,10,10,endpoint=False) # 不包括尾部数据 print(y3) y4= np.linspace(1, 10, 6, retstep=True) # 将步长与结果的数组放入一个list、 print(y4)
结果:
7.拉平操作 ravel()和faltten()及reshape(1,-1)的区别联系(补充[None,:]操作)
都是对numpy矩阵进行拉平处理,区别在于flatten()返回的仅仅是copy值,而ravel()返回的是实际的值,有点返回地址的意思。而x.reshape(1,-1)表示把向量 x reshape成一个行向量,注意的它仍然保持x的维度。
另外,Numpy中的 一维向量 有个特殊的用法,将行或者列设置成None,用来将矩阵转换成行或者列。偶尔会看到np.newaxis,这与None用法一致。
代码示例:
import numpy as np x = np.array([[1,2,3],[4,5,6],[1,2,3]]) x.flatten() print(x) x.ravel() print(x) x.ravel('F') print(x) x.flatten('F') print(x) x.flatten()[1] = 20 print(x) x.ravel()[1] = 20 print(x) x.reshape(1,-1) # 注意结果仍然是二维 print(x) x = np.array([1,2,3,6,7,8]) # 注意操作的是数组,即原x是数组 print(x) x[:,None] # 转成列向量(二维矩阵)*** print(x) x[np.newaxis, :] # np.newaxis与None用法一致 print(x)
结果:
8.np.prod() 计算元素乘积
默认计算矩阵所有元素的乘积,也可以通过axis计算指定轴的乘积
代码示例:
import numpy as np x = np.array([[1,2,3],[2,3,4]]) np.prod(x) print(x) np.prod(x,axis=1) print(x) np.prod(x,axis=0) print(x)
结果:
9.