numpy中有哪些简单且实用的操作
1、数组拆分
垂直拆分:numpy.vsplit(数组,份数)->(数组片段)
水平拆分:numpy.hsplit(数组,份数)->(数组片段)
numpy.dsplit(数组,份数)->(数组片段)
灵活选择引用
numpy基本加减和取行操作
矩阵删除、插入、尾部添加操作(delete,insert,append)
numpy矩阵操作主要有delete()、insert()、append()等函数,分别执行删除、插入和添加的操作,注意append可以看为insert函数的特殊情况,即在尾部补充可以看为插入最后一行或列,这在后文会举例说明。
delete()函数
#numpy.delete(arr,obj,axis=None)
#axis 表明哪个维度的向量应该被移除
#axis 如果为None,则需要先将矩阵拉平,在删去第obj的元素
#obj 表明axis维度的哪一行(或列)应该被移除。
insert()函数
#numpy.insert(arr,obj,value,axis=None)
#value 为插入的数值
#arr 为目标向量
#obj 为目标向量的axis维度的目标位置
#axis 为想要插入的维
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)
np.random.choice(a, size, replace, p)
其作用是按要求生成一个一维数组
a是生成一维数组的来源,可以是int类型,可以是数组,也可以是list
size 数组的维度replace 表示从a中是否不重复抽取,默认可重复 p 给出抽取概率,默认随机
np.argmax(a, axis=None, out=None)
作用是返回轴的最大值的索引值
a:需要操作的数组或者矩阵,默认情况拉平成数组
axis:默认将a拉平,当axis=0对a按列取最大值索引,axis=1则对a按行取最大值索引
out:将结果写到a中
星号(*)的作用
列表前加星号作用是将列表解开成两个独立的参数,输入函数。
字典前加两个星号,是将字典解开成独立的元素作为形参。
ndarray.ndim代表的就是shape元组的长度。
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,是否显示步长信息
拉平操作 ravel()和faltten()及reshape(1,-1)的区别联系(补充[None,:]操作)
都是对numpy矩阵进行拉平处理,区别在于flatten()返回的仅仅是copy值,而ravel()返回的是实际的值,有点返回地址的意思。而x.reshape(1,-1)表示把向量 x reshape成一个行向量,注意的它仍然保持x的维度。
另外,Numpy中的 一维向量 有个特殊的用法,将行或者列设置成None,用来将矩阵转换成行或者列。偶尔会看到np.newaxis,这与None用法一致。
np.prod() 计算元素乘积
默认计算矩阵所有元素的乘积,也可以通过axis计算指定轴的乘积
把矩阵大于或小于N的元素置M的技巧
技巧包括 maximum() 函数 、minimum() 函数,以及 矩阵操作的技巧
numpy中的矩阵copy问题
np.zeros_like()构造全零矩阵,无需指定大小
random.rand和random.rand和random.randint区别
np.random.randn() 生成正太分布矩阵
np.randm.randint() 生成离散均匀分布的整数值组成的矩阵
python 断言 assert
np.pad()函数进行padding操作
numpy.empty() 创建指定形状和数据类型且未初始化的数组
np.meshgrid() 快速生成网格
np.hstack() 和 np.vstack() 用于堆叠矩阵
numpy 取整
np.newaxis 在特定位置增加一个维度
python 广播机制