Numpy学习笔记
1.基本操作
1.1列表转为矩阵:np.array(list)
1.2维度:array.ndim
1.3行数和列数:array.shape
1.4元素个数:array.size
2.创建array
2.1一维array创建:np.array(list,dtype=np.int32) #np.int默认int32
2.2多维array创建:np.array(list1,List2)
2.3创建全零数组:np.zeros((valu1,valu2)) #生成value1行value2列全零矩阵
2.4创建全1数组:np.ones((valu1,valu2),dtype=np.int)
2.5创建全空数组::np.empty((valu1,valu2))
2.6创建连续数组:np.arange(a1,an,步长)
2.7reshape改变数据形状:array.reshape((valu1,valu2))
2.8创建连续型数据:np.linspace(1,10,20) #开始端1,结束端10,分割成20个数据
2.9Linspace的reshape操作:array.reshape((valu1,valu2))
3.Numpy基本运算
3.1一维矩阵的运算
3.2多维矩阵的运算:(1)np.dot(ndarray1,ndarray2) (2)a.dot(b)
查找时,axis为0,以列为查找单位;axis为1时,以行为查找单位。Array, axis=0 or 1
3.3基本计算:
最小元素索引np.argmin(array)
最大元素索引np.argmax(array)
整个矩阵的均值np.mean(array) or np.average(array) or array.mean()
中位数np.median(array)
累加np.cumsum(array)
累差np.diff(array)
矩阵每一行排序从小到大np.sort(array)
矩阵转置np.transpose(array) or array.T
Clip:np.clip(Array,Array_min,Array_max)
clip(Array,Array_min,Array_max)
将Array_min<X<Array_max X表示矩阵A中的数,如果满足上述关系,则原数不变。
否则,如果X<Array_min,则将矩阵中X变为Array_min;
如果X>Array_max,则将矩阵中X变为Array_max.
4.NumpyS索引与切片
打印列,进行转置即可:for column in array.T:
多维转一维:array.flatten() #array.flat是一个迭代器
5.Numpy array合并
5.1数组合并
上下合并:np.vstack((array1,array2))
左右合并:np.hstack((array1,array2))
5.2数组转矩阵:array[np.newaxis,:]
5.3多个矩阵合并:np.concatenate((array1,array2,…),axis=0 0r 1) #0时纵向合并;1时横向合并
6.Numpy array分割
6.1构造3行4列矩阵:np.arange(12).reshape((3,4)) #范围0~11
6.2等量分割:np.split(array,number,axis=1) #纵向分割的axis
np.split(array,number,axis=0) #横向分割的axis
6.3不等量分割:np.array_split(array1,number,axis=1)
6.4其他分割方式:np.vsplit(array1,number) #横向分割
Np.hsplit(array1,number) #纵向分割
7.Numpy copy与=
7.1“=”赋值有关联性(改变其中任意一个都会改变其他的数据,无论程序先后):
import numpy as np
a = np.arange(4)
print(a) # [0 1 2 3]
b = a
c = a
d = b
a[0] = 11
print(a) # [11 1 2 3]
print(b) # [11 1 2 3]
print(c) # [11 1 2 3]
print(d) # [11 1 2 3]
7.2cope()没有关联性:b=a.copy()
8.广播机制
numpy数组间的基础运算是一对一,也就是a.shape==b.shape,但是当两者不一样的时候,就会自动触发广播机制,如下例子:
from numpy import array
a = array([[ 0, 0, 0],
[10,10,10],
[20,20,20],
[30,30,30]])
b = array([0,1,2])
print(a+b)
运行结果:
[[ 0 1 2]
[10 11 12]
[20 21 22]
[30 31 32]]
9.常用函数
9.1np.bincount()#统计索引出现次数
x = np.array([1, 2, 3, 3, 0, 1, 4])
np.bincount(x)
结果:
array([1, 2, 1, 2, 1], dtype=int64)9.2np.argmax()numpy.argmax(array1,axis=None,out=None)
当axis默认时,返回最大值的索引;axis=0时,按列操作;axis=1时,按行操作
当最大元素重复出现,返回第一个最大值索引
9.3求取精度
np.around(list,decimals=number)
实例:
np.around([-0.6,1.2798,2.357,9.67,13], decimals=0)
array([-1., 1., 2., 10., 13.]) #负数进位取绝对值大的decimals表示指定保留有效数的位数,当超过5就会进位(此时包含5)
当decimals为负数时,实例:
np.around([1,2,5,6,56], decimals=-1)
array([ 0, 0, 0, 10, 60])
发现没,当超过5时候(不包含5),才会进位!-1表示看一位数进位即可,那么如果改为-2呢,那就得看两位!
np.around([1,2,5,50,56,190], decimals=-2)
array([ 0, 0, 0, 0, 100, 200])
看到没,必须看两位,超过50才会进位,190的话,就看后面两位,后两位90超过50,进位,那么为200!
9.4取整:np.floor(list) #返回数组
负数取整向左
9.5取上限:np.ceil(list)
9.6查找:np.where(np.array(list)>0,np.array(list),0) 利用np.where实现小于0的用0填充,大于0的数不变