日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Numpy 新手教程(2)

發布時間:2023/11/30 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Numpy 新手教程(2) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

翻譯自官方文檔Tentative?NumPy?Tutorial,有刪節。

基本操作

主要的算術運算符都能夠應用于數組類型,結果為相應元素之間的運,返回值為一個新的數組。

>>> 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.88031624, 7.4511316 , -2.62374854]) >>> a<35 array([True, True, False, False], dtype=bool)</span>

乘法操作符?*?表示的也是元素乘法。假設須要矩陣乘法,能夠使用dot函數或者生成一個matrix對象。?

>>> A = array( [[1,1], ... [0,1]] ) >>> B = array( [[2,0], ... [3,4]] ) >>> A*B # elementwise product array([[2, 0],[0, 4]]) >>> dot(A,B) # matrix product array([[5, 4],[3, 4]]) >>> 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 to integer type >>> a array([[6, 6, 6],[6, 6, 6]])</span>

當兩個不同元素類型的數組運算時,結果的元素類型為兩者中更精確的那個。(類型提升)

>>> 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'</span>

Array類型提供了很多內置的運算方法,比方。

>>> 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</span>

默認情況下,?這些方法作用于整個?array,通過指定?axis,能夠使其僅僅作用于某一個?axis?:?

>>> 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 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]])</span>

經常使用函數

NumPy?提供了很多經常使用函數,如sin,?cos,?and?exp.?相同,這些函數作用于數組中每個元素,返回還有一個數組。

>>> 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.])</span>

其它經常使用函數包含:

all,?alltrue,?any,?apply?along?axis,?argmax,?argmin,?argsort,?average,?bincount,?ceil,?clip,?conj,?conjugate,?corrcoef,?cov,?cross,?cumprod,?cumsum,?diff,?dot,?floor,?inner,?inv,?lexsort,?max,?maximum,?mean,?median,?min,?minimum,?nonzero,?outer,?prod,?re,?round,?sometrue,?sort,?std,?sum,?trace,?transpose,?var,?vdot,?vectorize,?where


索引、切片、和迭代

list類似,數組能夠通過下標索引某一個元素。也能夠切片,能夠用迭代器迭代。

>>> a = arange(10)**3 >>> a array([ 0, 1, 8, 27, 64, 125, 216, 343, 512, 729]) >>> a[2] 8 >>> a[2:5] array([ 8, 27, 64]) >>> a[:6:2] = -1000 # equivalent to a[0:6:2] = -1000; from start to position 6, exclusive, set every 2nd element to -1000 >>> a array([-1000, 1, -1000, 27, -1000, 125, 216, 343, 512, 729]) >>> a[ : :-1] # reversed a array([ 729, 512, 343, 216, 125, -1000, 27, -1000, 1, -1000]) >>> for i in a: ... print i**(1/3.), ... nan 1.0 nan 3.0 nan 5.0 6.0 7.0 8.0 9.0</span>

多維數組能夠用tuple?來索引.??

>>> def f(x,y): ... return 10*x+y ... >>> b = fromfunction(f,(5,4),dtype=int) >>> b array([[ 0, 1, 2, 3],[10, 11, 12, 13],[20, 21, 22, 23],[30, 31, 32, 33],[40, 41, 42, 43]]) >>> b[2,3] 23 >>> b[0:5, 1] # each row in the second column of b array([ 1, 11, 21, 31, 41]) >>> b[ : ,1] # equivalent to the previous example array([ 1, 11, 21, 31, 41]) >>> b[1:3, : ] # each column in the second and third row of b array([[10, 11, 12, 13],[20, 21, 22, 23]]) >>> b[-1] # the last row. Equivalent to b[-1,:] array([40, 41, 42, 43])</span>

省略號...表示那些列取完整的值,比方,假設x?rank?=?5,那么?

  • ?x[1,2,...]?is?equivalent?to?x[1,2,:,:,:],?
  • ?x[...,3]?to?x[:,:,:,:,3]?and?
  • ?x[4,...,5,:]?to?x[4,:,:,5,:].

>>> c = array( [ [[ 0, 1, 2], # a 3D array (two stacked 2D arrays) ... [ 10, 12, 13]], ... ... [[100,101,102], ... [110,112,113]] ] ) >>> c.shape (2, 2, 3) >>> c[1,...] # same as c[1,:,:] or c[1] array([[100, 101, 102],[110, 112, 113]]) >>> c[...,2] # same as c[:,:,2] array([[ 2, 13],[102, 113]])

多維數組迭代時以第一個維度為迭代單位:?

>>> 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]

假設我們想忽略維度。將多維數組當做一個大的一維數組也是能夠的,以下是樣例

>>> for element in b.flat: ... print element, ... 0 1 2 3 10 11 12 13 20 21 22 23 30 31 32 33 40 41 42 43

轉載于:https://www.cnblogs.com/jzdwajue/p/6881522.html

總結

以上是生活随笔為你收集整理的Numpy 新手教程(2)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。