numpy note2

数组的基本操作
1、算数运算

In [11]:x=np.arange(0,5)
In [12]:y=np.arange(5,10)
In [13]:x+y
Out[13]:array([ 5,  7,  9, 11, 13])
In [14]:x-y
Out[14]:array([-5, -5, -5, -5, -5])
In [15]:x*y
Out[15]:array([ 0,  6, 14, 24, 36])
 #数组a乘以数组b的平方根
In [16]:x * np.sqrt(y)
Out[16]:array([  0.        ,   2.44948974,   5.29150262,   8.48528137,  12.        ])

2、矩阵积

In [22]: a = np.arange(12).reshape(4, 3)
In [23]: a
Out[23]: 
array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 9, 10, 11]])
In [24]: b = np.arange(12).reshape(3, 4)
In [25]: b
Out[25]: 
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
In [26]: np.dot(a,b)
Out[26]: 
array([[ 20,  23,  26,  29],
       [ 56,  68,  80,  92],
       [ 92, 113, 134, 155],
       [128, 158, 188, 218]])
In [27]: a.dot(b)
Out[27]: 
array([[ 20,  23,  26,  29],
       [ 56,  68,  80,  92],
       [ 92, 113, 134, 155],
       [128, 158, 188, 218]])
#np.dot(b, a) != np.dot(a, b)
In [29]: np.dot(b, a)
Out[29]: 
array([[ 42,  48,  54],
       [114, 136, 158],
       [186, 224, 262]])

3、自增、自减操作

In [30]: a = np.arange(2,4)
In [31]: a++
  File "<ipython-input-31-bdceb1bc89e4>", line 1
    a++
       ^
SyntaxError: invalid syntax
#python没有++或--运算符,对变量的值进行自增或自减,需要使用+=或-=运算符
In [32]: a--
  File "<ipython-input-32-59ad1d88dade>", line 1
    a--
       ^
SyntaxError: invalid syntax

4、聚合函数
概念:指对一组值(比如一个数组)进行操作,返回一个单一值作为结果的函数。

#创建一维数组
In [35]: a = np.array([2, 4, 5, 7, 8])
In [36]: a
Out[36]: array([2, 4, 5, 7, 8])
#求和
In [38]: a.sum()
Out[38]: 26
#算术平均数
In [39]: a.mean()
Out[39]: 5.2000000000000002
#标准差
In [41]: a.std()
Out[41]: 2.1354156504062622
#方差
In [42]: a.var()
Out[42]: 4.5600000000000005
#最小值
In [43]: a.min()
Out[43]: 2
#最大值
In [44]: a.max()
Out[44]: 8
#最小值索引
In [45]: a.argmin()
Out[45]: 0
#最大值索引
In [46]: a.argmax()
Out[46]: 4
#所有元素累积和
In [47]: a.cumsum()
Out[47]: array([ 2,  6, 11, 18, 26], dtype=int32)
#所有元素累计积
In [48]: a.cumprod()
Out[48]: array([   2,    8,   40,  280, 2240], dtype=int32)

5、矩阵转置

In [49]: x = np.arange(0,12).reshape((4,3))
In [50]: x
Out[50]: 
array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 9, 10, 11]])
In [51]: x.T
Out[51]: 
array([[ 0,  3,  6,  9],
       [ 1,  4,  7, 10],
       [ 2,  5,  8, 11]])

6、几个函数的介绍

#clip(Array, Array_min, Array_max):
#判断是否有比最小值小的或者比最大值大的元素,并将这些指定的元素转换为最小值或者最大值
In [52]: x = np.arange(0,24,2).reshape((4,3))
In [53]: x
Out[53]: 
array([[ 0,  2,  4],
       [ 6,  8, 10],
       [12, 14, 16],
       [18, 20, 22]])
In [54]: np.clip(x,5,15)
Out[54]: 
array([[ 5,  5,  5],
       [ 6,  8, 10],
       [12, 14, 15],
       [15, 15, 15]])
#diff:(累差运算函数)每一行中后一项与前一项之差
In [55]: np.diff(x,axis=1)
Out[55]: 
array([[2, 2],
       [2, 2],
       [2, 2],
       [2, 2]])
In [56]: np.diff(x,axis=0)
Out[56]: 
array([[6, 6, 6],
       [6, 6, 6],
       [6, 6, 6]])
#将所有非零元素的行与列坐标分割开,重构成两个分别关于行和列的矩阵
In [58]: np.nonzero(x)
Out[58]: 
(array([0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3], dtype=int64),
 array([1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2], dtype=int64))

7、指定行、列操作

#axis应用
In [60]: a=np.arange(0,24,2).reshape(4,3)
In [61]: a
Out[61]: 
array([[ 0,  2,  4],
       [ 6,  8, 10],
       [12, 14, 16],
       [18, 20, 22]])
#横坐标为第1,2行,纵坐标为第0列
In [62]: a[[1,2],:1]
Out[62]: 
array([[ 6],
       [12]])
#横坐标为第1,2行,纵坐标为第0,1,2列
In [63]: a[[1,2],:3]
Out[63]: 
array([[ 6,  8, 10],
       [12, 14, 16]])
#横坐标为第0,1,2行,纵坐标为第0,1,2列
In [64]: a[:3,:3]
Out[64]: 
array([[ 0,  2,  4],
       [ 6,  8, 10],
       [12, 14, 16]])
#横坐标为第2行,纵坐标为第0,1,2列
In [65]: a[2][:3]
Out[65]: array([12, 14, 16])
#横坐标为第2行,纵坐标为0,1列
In [66]: a[2][:2]
Out[66]: array([12, 14])
#横坐标为第0,1行,纵坐标为0,1,2列
In [67]: a[:2][:2]
Out[67]: 
array([[ 0,  2,  4],
       [ 6,  8, 10]])

猜你喜欢

转载自blog.csdn.net/zztingfeng/article/details/80063408