numpy的一些小操作

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不会改变

猜你喜欢

转载自blog.csdn.net/qq_41832686/article/details/80644157