NumPy 基本運算

2021-07-12 04:12:56 字數 3371 閱讀 5449

在原文基礎上適當精簡並更正少量原作者的筆誤:

基本運算:

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方法...