numpy属性
- a = np.zeros( (3,4) ) 零矩阵,ones,empty
- array.ndim 计算矩阵的维度
- array.shape 计算矩阵的行数与列数
- array.size 计算矩阵元素个数
import numpy as np
a = np.array([[1,2,3],
[2,3,4]])
print(a.ndim)
print(a.shape)
print(a.size)
====
2
(2, 3)
6
- dtype=np.int(int32,int64,float32,float64) array的类型
- arange生成列表
import numpy as np
a = np.arange(10,20,2)
print(a)
====
[10 12 14 16 18]
- reshape() 重新定义shape,行数及列数
- 列表内容
import numpy as np
a = np.arange(10,20,3).reshape((2,2))
print(a)
====
[ 1. 1.47368421 1.94736842 2.42105263 2.89473684 3.36842105
3.84210526 4.31578947 4.78947368 5.26315789 5.73684211 6.21052632
6.68421053 7.15789474 7.63157895 8.10526316 8.57894737 9.05263158
9.52631579 10. ]
- linspace生成线状列表,第三个参数是段数
import numpy as np
a = np.linspace(1,10,20)
print(a)
====
[[10 13]
[16 19]]
基础运算
- 平方:a**2
- 三角运算:sin()
- 矩阵相乘:dot(a,b) /a.dot(b)
- 随机生成0到1之间的数
- 求和sum(),最大值max()
import numpy as np
a = np.random.random((2,4))
print(a)
print(np.sum(a,axis=1))
print(np.max(a))
print(np.min(a))
====
[[0.32518483 0.67005836 0.82871836 0.56692768]
[0.03227038 0.16660943 0.55947306 0.57512276]]
3.7243648620796677
0.828718359870989
0.03227037599931182
- axis=1表示在列中做相应的操作
- transpose()/a.T矩阵转置
- arymin(a)矩阵最小的一个值的序号
import numpy as np
a = np.arange(0,12).reshape((3,4))
print(a.argmax())
====
11
- mean() 计算平均数,np.average()计算加权平均数,np.median()计算中位数
import numpy as np
a = np.arange(0,12).reshape((3,4))
print(a.mean())
print(np.mean(a))
print(np.average(a)) ##average只能使用这种形式
print(np.median(a)) ##median只能使用这种形式
====
5.5
5.5
5.5
5.5
- cumsum计算每项累加,diff计算每项累差
import numpy as np
a = np.arange(0,12).reshape((3,4))
print(a.cumsum())
print(np.diff(a))
====
[ 0 1 3 6 10 15 21 28 36 45 55 66]
[[1 1 1]
[1 1 1]
[1 1 1]]
- nonzero()输出两个数组,分别表示行序数,列序数
import numpy as np
a = np.arange(0,12).reshape((3,4))
print(a.nonzero())
====
(array([0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], dtype=int64), array([1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64))
- clip()过滤矩阵里面的数字
import numpy as np
a = np.arange(0,12).reshape((3,4))
print(a.clip(5,9))
====
[[5 5 5 5]
[5 5 6 7]
[8 9 9 9]]
- a[:,2]选择第二列
- flatten()返回arrary
import numpy as np
a = np.arange(0,12).reshape((3,4))
print(a.flatten())
====
[ 0 1 2 3 4 5 6 7 8 9 10 11]
分割矩阵
- axis=1代表以x轴分割,即垂直分割,以一条(|)为单位进行操作
- axis=0代表以y轴分割,即水平分割,以一列(—)为单位进行操作
print(np.split(a,3,axis=0)) ##(垂直)分成3块
print(np.vsplit(a,3))
(上下的操作,水平切割)
print(np.hsplit(a,2))
(左右的操作,垂直切割)
以上只能均等分割
- array_split()进行不均等分割
print(np.array_split(a,3,axis=1))
可以不均等分割
合并矩阵
print(np.vstack((a,b))) axis=0
(上下操作,上下合并)
print(np.hstack((a,b))) axis=1
(左右操作,左右合并)
a = np.array([1,1,1])[:,np.newaxis]
使a的shape(3,)变为(3,1),加了一个列维度
b = np.array([2,2,2])[:,np.newaxis]
c=np.concatenate((a,b,b,a),axis=1) ##可以要求axis=1,0
axis=1,左右合并 hstack
axia=0,上下合并 vstack
任意方向合并
赋值
a=[0,1,2,3]
a[0]=11
b=a
上述情况b会一直随着a的改变而改变
b=a.copy()
使用deep copy,b只会copya的值,以后a改变,b不会改变