基本运算:
整个array按顺序参与运算:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
>>> a = np.array( [ 20 , 30 , 40 , 50 ] )
>>> b = np.arange( 4 )
>>> b
array([ 0 , 1 , 2 , 3 ])
>>> c = a - b
>>> c
array([ 20 , 29 , 38 , 47 ])
>>> b * * 2
array([ 0 , 1 , 4 , 9 ])
>>> 10 * np.sin(a)
array([ 9.12945251 , - 9.88031624 , 7.4511316 , - 2.62374854 ])
>>> a< 35
array([ True , True , False , False ], dtype = bool )
|
- 两个二维使用*符号仍然是按位置一对一相乘,如果想表示矩阵乘法,使用dot:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
>>> A = np.array( [[ 1 , 1 ],
... [ 0 , 1 ]] )
>>> B = np.array( [[ 2 , 0 ],
... [ 3 , 4 ]] )
>>> A * B # elementwise product
array([[ 2 , 0 ],
[ 0 , 4 ]])
>>> A.dot(B) # matrix product
array([[ 5 , 4 ],
[ 3 , 4 ]])
>>> np.dot(A, B) # another matrix product
array([[ 5 , 4 ],
[ 3 , 4 ]])
|
- 内置函数(min,max,sum),同时可以使用axis指定对哪一维进行操作:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
>>> b = np.arange( 12 ).reshape( 3 , 4 )
>>> b
array([[ 0 , 1 , 2 , 3 ],
[ 4 , 5 , 6 , 7 ],
[ 8 , 9 , 10 , 11 ]])
>>>
>>> b. sum (axis = 0 ) # sum of each column
array([ 12 , 15 , 18 , 21 ])
>>>
>>> b. min (axis = 1 ) # min of each row
array([ 0 , 4 , 8 ])
>>>
>>> b.cumsum(axis = 1 ) # cumulative sum along each row
array([[ 0 , 1 , 3 , 6 ],
[ 4 , 9 , 15 , 22 ],
[ 8 , 17 , 27 , 38 ]])
|
1
2
3
4
5
6
7
8
9
10
|
>>> B = np.arange( 3 )
>>> B
array([ 0 , 1 , 2 ])
>>> np.exp(B)
array([ 1. , 2.71828183 , 7.3890561 ])
>>> np.sqrt(B)
array([ 0. , 1. , 1.41421356 ])
>>> C = np.array([ 2. , - 1. , 4. ])
>>> np.add(B, C)
array([ 2. , 0. , 6. ])
|
寻址,索引和遍历:
获得二维数组的某行或者某列数据
b=np.array([[ 0, 1, 2, 3],
[10, 11, 12, 13],
[20, 21, 22, 23],
[30, 31, 32, 33],
[40, 41, 42, 43]])
print(b[0:5, 1]) # 得到第2列,index=1
print(b[: , 1]) # 得到第2列,index=1
print(b[1,:]) # 获得第二行,index = 1
遍历:
如果只想遍历整个array可以直接使用:
1
2
3
4
5
6
7
8
|
>>> for row in b:
... print (row)
...
[ 0 1 2 3 ]
[ 10 11 12 13 ]
[ 20 21 22 23 ]
[ 30 31 32 33 ]
[ 40 41 42 43 ]
|
- 但是如果要对每个元素进行操作,就要使用flat属性,这是一个遍历整个数组的迭代器