在原文基礎上適當精簡並更正少量原作者的筆誤:
基本運算:
1. 陣列的算術運算是按元素的。新的陣列被建立並且被結果填充:
>>> a = array([20,30,40,50] )
>>> b = arange( 4 )
>>> b
array([0, 1, 2, 3])
>>> c = a-b
>>> c
array([20, 29, 38, 47])
>>> b**2 # x.^2
array([0, 1, 4, 9])
>>> 10*sin(a)
array([ 9.12945251,-9.88031624, 7.4511316 , -2.62374854])
>>> a<35
array([true, true,false, false], dtype=bool)
2. 不像許多矩陣語言,numpy中的乘法運算子 * 指示按元素計算,矩陣乘法可以使用 dot 函式或建立矩陣物件實現(參見教程中的矩陣章節)
>>> a = array([[1,1],
... [0,1]] )
>>> b = array([[2,0],
... [3,4]] )
>>>a*b # elementwiseproduct
array([[2, 0],
[0, 4]])
>>> dot(a,b) # matrix product
array([[5, 4],
[3, 4]])
3. 有些操作符像 += 和 *= 被用來更改已存在陣列而不建立乙個新的陣列。
>>> a = ones((2,3),dtype=int)
>>> b =random.random((2,3))
>>> a *= 3
>>> a
array([[3, 3, 3],
[3, 3, 3]])
>>> b += a
>>> b
array([[ 3.69092703, 3.8324276 , 3.0114541 ],
[ 3.18679111, 3.3039349 , 3.37600289]])
>>> a +=b
# b is converted tointeger type !!!
>>> a
array([[6, 6, 6],
[6, 6, 6]])
4. 當運算的是不同型別的陣列時,結果陣列和更普遍和精確的資料型別一致(這種行為叫做upcast)。
>>> a = ones(3,dtype=int32)
>>> b =linspace(0,pi,3)
>>> b.dtype.name
'float64'
>>> c = a+b
>>> c
array([ 1. , 2.57079633, 4.14159265])
>>> c.dtype.name
'float64'
>>> d = exp(c*1j)
>>> d
array([0.54030231+0.84147098j, -0.84147098+0.54030231j,
-0.54030231-0.84147098j])
>>> d.dtype.name
'complex128'
許多非陣列運算,如計算陣列所有元素之和,被作為ndarray類的方法實現:
>>> a =random.random((2,3))
>>> a
array([[ 0.6903007 , 0.39168346, 0.16524769],
[ 0.48819875, 0.77188505, 0.94792155]])
>>> a.sum()
3.4552372100521485
>>> a.min()
0.16524768654743593
>>> a.max()
0.9479215542670073
5. 這些運算預設應用到陣列好像它就是乙個數字組成的列表,無關陣列的形狀。然而,指定 axis 引數你可以把運算應用到陣列指定的軸(在numpy中維度(dimensions)叫做軸(axes))上:
>>> b =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 eachcolumn
array([12, 15, 18, 21])
>>>b.min(axis=1)
# min of each row
array([0, 4, 8])
>>>b.cumsum(axis=1)
# cumulative sumalong each row
array([[ 0, 1, 3, 6],
[ 4, 9, 15, 22],
[ 8, 17, 27, 38]])
6. 通用函式(ufunc)
numpy提供常見的數學函式如 sin , cos 和 exp ,這些叫作「通用函式」(ufunc)。在numpy裡這些函式按陣列的元素運算,產生乙個陣列作為輸出。
>>> b = arange(3)
>>> b
array([0, 1, 2])
>>> exp(b)
array([ 1. , 2.71828183, 7.3890561 ])
>>> sqrt(b)
array([ 0. , 1. , 1.41421356])
>>> c = array([2.,-1., 4.])
>>> add(b, c)
array([ 2., 0., 6.])
基本運算 NumPy
陣列的算術運算是按元素的。新的陣列被建立並且被結果填充。a array 20,30,40,50 b 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 sin a array 9.12945251,9.880...
Numpy陣列的基本運算
import numpy as np對應元素進行四則運算 a np.arange 3,8 b np.arange 1,6 print a a print b b print a b a b print a b a b print a b a b print a b a b a 3 4 5 6 7 b...
利用numpy庫實現基本矩陣運算
一 建立矩陣 numpy庫中有兩種建立矩陣的方法,兩種方法產生的矩陣型別有所不同。第一種方法是matrix方法,產生的是普通矩陣 import numpy as np 在idle下直接呼叫numpy庫 a np.matrix 1,2 3,4 5,6 產生乙個3 2的矩陣a而另一種方法為array方法...