数据分析之numpy
一、NumPy Ndarray 對象
NumPy 最重要的一個特點是其 N 維數(shù)組對象 ndarray,它是一系列同類型數(shù)據(jù)的集合,以 0 下標為開始進行集合中元素的索引。
ndarray 對象是用于存放同類型元素的多維數(shù)組。
ndarray 中的每個元素在內存中都有相同存儲大小的區(qū)域。
ndarray 內部由以下內容組成:
-  
一個指向數(shù)據(jù)(內存或內存映射文件中的一塊數(shù)據(jù))的指針。
 -  
數(shù)據(jù)類型或 dtype,描述在數(shù)組中的固定大小值的格子。
 -  
一個表示數(shù)組形狀(shape)的元組,表示各維度大小的元組。
 -  
一個跨度元組(stride),其中的整數(shù)指的是為了前進到當前維度下一個元素需要"跨過"的字節(jié)數(shù)。
 
二、Numpy數(shù)據(jù)類型
numpy 支持的數(shù)據(jù)類型比 Python 內置的類型要多很多,基本上可以和 C 語言的數(shù)據(jù)類型對應上,其中部分類型對應為 Python 內置的類型。
bool_ 布爾型數(shù)據(jù)類型(True 或者 False) int_ 默認的整數(shù)類型(類似于 C 語言中的 long,int32 或 int64) intc 與 C 的 int 類型一樣,一般是 int32 或 int 64 intp 用于索引的整數(shù)類型(類似于 C 的 ssize_t,一般情況下仍然是 int32 或 int64) int8 字節(jié)(-128 to 127) int16 整數(shù)(-32768 to 32767) int32 整數(shù)(-2147483648 to 2147483647) int64 整數(shù)(-9223372036854775808 to 9223372036854775807) uint8 無符號整數(shù)(0 to 255) uint16 無符號整數(shù)(0 to 65535) uint32 無符號整數(shù)(0 to 4294967295) uint64 無符號整數(shù)(0 to 18446744073709551615) float_ float64 類型的簡寫 float16 半精度浮點數(shù),包括:1 個符號位,5 個指數(shù)位,10 個尾數(shù)位 float32 單精度浮點數(shù),包括:1 個符號位,8 個指數(shù)位,23 個尾數(shù)位 float64 雙精度浮點數(shù),包括:1 個符號位,11 個指數(shù)位,52 個尾數(shù)位 complex_ complex128 類型的簡寫,即 128 位復數(shù) complex64 復數(shù),表示雙 32 位浮點數(shù)(實數(shù)部分和虛數(shù)部分) complex128 復數(shù),表示雙 64 位浮點數(shù)(實數(shù)部分和虛數(shù)部分) View Code三、Numpy數(shù)組屬性
NumPy 數(shù)組的維數(shù)稱為秩(rank),一維數(shù)組的秩為 1,二維數(shù)組的秩為 2,以此類推。
在 NumPy中,每一個線性的數(shù)組稱為是一個軸(axis),也就是維度(dimensions)。比如說,二維數(shù)組相當于是兩個一維數(shù)組,其中第一個一維數(shù)組中每個元素又是一個一維數(shù)組。所以一維數(shù)組就是 NumPy 中的軸(axis),第一個軸相當于是底層數(shù)組,第二個軸是底層數(shù)組里的數(shù)組。而軸的數(shù)量——秩,就是數(shù)組的維數(shù)。
ndarray.ndim 秩,即軸的數(shù)量或維度的數(shù)量 ndarray.shape 數(shù)組的維度,對于矩陣,n 行 m 列 ndarray.size 數(shù)組元素的總個數(shù),相當于 .shape 中 n*m 的值 ndarray.dtype ndarray 對象的元素類型 ndarray.itemsize ndarray 對象中每個元素的大小,以字節(jié)為單位 ndarray.flags ndarray 對象的內存信息 ndarray.real ndarray元素的實部 ndarray.imag ndarray 元素的虛部 ndarray.data 包含實際數(shù)組元素的緩沖區(qū),由于一般通過數(shù)組的索引獲取元素,所以通常不需要使用這個屬性。 View Code四、數(shù)組的創(chuàng)建
numpy.empty(shape, dtype = float, order = 'C') shape 數(shù)組形狀 dtype 數(shù)據(jù)類型,可選 order 有"C"和"F"兩個選項,分別代表,行優(yōu)先和列優(yōu)先,在計算機內存中的存儲元素的順序。 numpy.empty numpy.zeros(shape, dtype = float, order = 'C') shape 數(shù)組形狀 dtype 數(shù)據(jù)類型,可選 order 'C' 用于 C 的行數(shù)組,或者 'F' 用于 FORTRAN 的列數(shù)組 numpy.zeros numpy.ones(shape, dtype = None, order = 'C') shape 數(shù)組形狀 dtype 數(shù)據(jù)類型,可選 order 'C' 用于 C 的行數(shù)組,或者 'F' 用于 FORTRAN 的列數(shù)組 numpy.ones從已有的數(shù)組創(chuàng)建數(shù)組:
numpy.asarray(a, dtype = None, order = None) a 任意形式的輸入?yún)?shù),可以是,列表, 列表的元組, 元組, 元組的元組, 元組的列表,多維數(shù)組 dtype 數(shù)據(jù)類型,可選 order 可選,有"C"和"F"兩個選項,分別代表,行優(yōu)先和列優(yōu)先,在計算機內存中的存儲元素的順序。 numpy.asarray numpy.frombuffer 用于實現(xiàn)動態(tài)數(shù)組。 numpy.frombuffer 接受 buffer 輸入?yún)?shù),以流的形式讀入轉化成 ndarray 對象。numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0) buffer 可以是任意對象,會以流的形式讀入。 dtype 返回數(shù)組的數(shù)據(jù)類型,可選 count 讀取的數(shù)據(jù)數(shù)量,默認為-1,讀取所有數(shù)據(jù)。 offset 讀取的起始位置,默認為0。 numpy.frombuffer numpy.fromiter(iterable, dtype, count=-1) iterable 可迭代對象 dtype 返回數(shù)組的數(shù)據(jù)類型 count 讀取的數(shù)據(jù)數(shù)量,默認為-1,讀取所有數(shù)據(jù) numpy.fromiter從數(shù)值范圍創(chuàng)建數(shù)組:
創(chuàng)建數(shù)值范圍并返回 ndarray 對象numpy.arange(start, stop, step, dtype) start 起始值,默認為0 stop 終止值(不包含) step 步長,默認為1 dtype 返回ndarray的數(shù)據(jù)類型,如果沒有提供,則會使用輸入數(shù)據(jù)的類型。 numpy.arange 創(chuàng)建一個一維數(shù)組,數(shù)組是一個等差數(shù)列構成的 np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) start 序列的起始值 stop 序列的終止值,如果endpoint為true,該值包含于數(shù)列中 num 要生成的等步長的樣本數(shù)量,默認為50 endpoint 該值為 ture 時,數(shù)列中中包含stop值,反之不包含,默認是True。 retstep 如果為 True 時,生成的數(shù)組中會顯示間距,反之不顯示。 dtype ndarray 的數(shù)據(jù)類型 numpy.linspace 用于創(chuàng)建一個于等比數(shù)列np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None) start 序列的起始值為:base ** start stop 序列的終止值為:base ** stop。如果endpoint為true,該值包含于數(shù)列中 num 要生成的等步長的樣本數(shù)量,默認為50 endpoint 該值為 ture 時,數(shù)列中中包含stop值,反之不包含,默認是True。 base 對數(shù) log 的底數(shù)。 dtype ndarray 的數(shù)據(jù)類型 numpy.logspace五、Numpy數(shù)組的切片與索引
ndarray對象的內容可以通過索引或切片來訪問和修改,與 list 的切片操作一樣。
高級索引:
import numpy as np x = np.array([[1, 2], [3, 4], [5, 6]]) y = x[[0,1,2], [0,1,0]] print (y)[1 4 5] 整數(shù)數(shù)組索引 布爾索引通過布爾運算(如:比較運算符)來獲取符合指定條件的元素的數(shù)組。import numpy as np x = np.array([[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11]]) print ('我們的數(shù)組是:') print (x) print ('\n') # 現(xiàn)在我們會打印出大于 5 的元素 print ('大于 5 的元素是:') print (x[x > 5])我們的數(shù)組是: [[ 0 1 2][ 3 4 5][ 6 7 8][ 9 10 11]]大于 5 的元素是: [ 6 7 8 9 10 11] 布爾索引 花式索引指的是利用整數(shù)數(shù)組進行索引。 花式索引根據(jù)索引數(shù)組的值作為目標數(shù)組的某個軸的下標來取值。對于使用一維整型數(shù)組作為索引,如果目標是一維數(shù)組,那么索引的結果就是對應位置的元素;如果目標是二維數(shù)組,那么就是對應下標的行。import numpy as np x=np.arange(32).reshape((8,4)) print (x[[4,2,1,7]])[[16 17 18 19][ 8 9 10 11][ 4 5 6 7][28 29 30 31]] 花式索引六、NumPy 廣播
廣播(Broadcast)是 numpy 對不同形狀(shape)的數(shù)組進行數(shù)值計算的方式, 對數(shù)組的算術運算通常在相應的元素上進行。
廣播的規(guī)則:
- 讓所有輸入數(shù)組都向其中形狀最長的數(shù)組看齊,形狀中不足的部分都通過在前面加 1 補齊。
 - 輸出數(shù)組的形狀是輸入數(shù)組形狀的各個維度上的最大值。
 - 如果輸入數(shù)組的某個維度和輸出數(shù)組的對應維度的長度相同或者其長度為 1 時,這個數(shù)組能夠用來計算,否則出錯。
 - 當輸入數(shù)組的某個維度的長度為 1 時,沿著此維度運算時都用此維度上的第一組值。
 
簡單理解:對兩個數(shù)組,分別比較他們的每一個維度(若其中一個數(shù)組沒有當前維度則忽略),滿足:
- 數(shù)組擁有相同形狀。
 - 當前維度的值相等。
 - 當前維度的值有一個是 1。
 
若條件不滿足,拋出?"ValueError: frames are not aligned"?異常。
七、NumPy 迭代數(shù)組
np.nditer(ndarray,order, op_flags, flags) 將ndarray對象轉換為迭代器
c_index 可以跟蹤 C 順序的索引 f_index 可以跟蹤 Fortran 順序的索引 multi-index 每次迭代可以跟蹤一種索引類型 external_loop 給出的值是具有多個值的一維數(shù)組,而不是零維數(shù)組 flags廣播迭代,如果兩個數(shù)組是可廣播的,nditer 組合對象能夠同時迭代它們。
八、Numpy數(shù)組操作
numpy.reshape(arr, newshape, order='C') arr:要修改形狀的數(shù)組 newshape:整數(shù)或者整數(shù)數(shù)組,新的形狀應當兼容原有形狀 order:'C' -- 按行,'F' -- 按列,'A' -- 原順序,'k' -- 元素在內存中的出現(xiàn)順序。numpy.ndarray.flat 一個數(shù)組元素迭代器numpy.ndarray.flatten 返回一份數(shù)組拷貝,對拷貝所做的修改不會影響原始數(shù)組numpy.ravel 展平的數(shù)組元素,順序通常是"C風格",返回的是數(shù)組視圖(view,有點類似 C/C++引用reference的意味),修改會影響原始數(shù)組。 修改數(shù)組形狀 用于對換數(shù)組的維度 numpy.transpose(arr, axes) arr:要操作的數(shù)組 axes:整數(shù)列表,對應維度,通常所有維度都會對換。向后滾動特定的軸到一個特定位置 numpy.rollaxis(arr, axis, start) arr:數(shù)組 axis:要向后滾動的軸,其它軸的相對位置不會改變 start:默認為零,表示完整的滾動。會滾動到特定位置。 用于交換數(shù)組的兩個軸 numpy.swapaxes(arr, axis1, axis2) arr:輸入的數(shù)組 axis1:對應第一個軸的整數(shù) axis2:對應第二個軸的整數(shù) 翻轉數(shù)組 numpy.broadcast 模仿廣播的對象,它返回一個對象,該對象封裝了將一個數(shù)組廣播到另一個數(shù)組的結果。numpy.broadcast_to numpy.broadcast_to 函數(shù)將數(shù)組廣播到新形狀。它在原始數(shù)組上返回只讀視圖。 它通常不連續(xù)。 如果新形狀不符合 NumPy 的廣播規(guī)則,該函數(shù)可能會拋出ValueError。numpy.expand_dims 通過在指定位置插入新的軸來擴展數(shù)組形狀numpy.squeeze 從給定數(shù)組的形狀中刪除一維的條目 修改數(shù)組維度 用于沿指定軸連接相同形狀的兩個或多個數(shù)組 numpy.concatenate((a1, a2, ...), axis) a1, a2, ...:相同類型的數(shù)組 axis:沿著它連接數(shù)組的軸,默認為 0用于沿新軸連接數(shù)組序列 numpy.stack(arrays, axis) arrays相同形狀的數(shù)組序列 axis:返回數(shù)組中的軸,輸入數(shù)組沿著它來堆疊numpy.hstack numpy.stack 函數(shù)的變體,它通過水平堆疊來生成數(shù)組。 numpy.vstack numpy.stack 函數(shù)的變體,它通過垂直堆疊來生成數(shù)組。 連接數(shù)組 沿特定的軸將數(shù)組分割為子數(shù)組 numpy.split(ary, indices_or_sections, axis) ary:被分割的數(shù)組 indices_or_sections:果是一個整數(shù),就用該數(shù)平均切分,如果是一個數(shù)組,為沿軸切分的位置(左開右閉) axis:沿著哪個維度進行切向,默認為0,橫向切分。為1時,縱向切分numpy.hsplit 用于水平分割數(shù)組,通過指定要返回的相同形狀的數(shù)組數(shù)量來拆分原數(shù)組。 numpy.vsplit 沿著垂直軸分割,其分割方式與hsplit用法相同。 分割數(shù)組 返回指定大小的新數(shù)組。 numpy.resize(arr, shape) arr:要修改大小的數(shù)組 shape:返回數(shù)組的新形狀函數(shù)在數(shù)組的末尾添加值。 追加操作會分配整個數(shù)組,并把原來的數(shù)組復制到新數(shù)組中。 此外,輸入數(shù)組的維度必須匹配否則將生成ValueError。 numpy.append(arr, values, axis=None) arr:輸入數(shù)組 values:要向arr添加的值,需要和arr形狀相同(除了要添加的軸) axis:默認為 None。當axis無定義時,是橫向加成,返回總是為一維數(shù)組!當axis有定義的時候,分別為0和1的時候。當axis有定義的時候,分別為0和1的時候(列數(shù)要相同)。當axis為1時,數(shù)組是加在右邊(行數(shù)要相同)。給定索引之前,沿給定軸在輸入數(shù)組中插入值。 numpy.insert(arr, obj, values, axis) arr:輸入數(shù)組 obj:在其之前插入值的索引 values:要插入的值 axis:沿著它插入的軸,如果未提供,則輸入數(shù)組會被展開返回從輸入數(shù)組中刪除指定子數(shù)組的新數(shù)組。 Numpy.delete(arr, obj, axis) arr:輸入數(shù)組 obj:可以被切片,整數(shù)或者整數(shù)數(shù)組,表明要從輸入數(shù)組刪除的子數(shù)組 axis:沿著它刪除給定子數(shù)組的軸,如果未提供,則輸入數(shù)組會被展開用于去除數(shù)組中的重復元素 numpy.unique(arr, return_index, return_inverse, return_counts) arr:輸入數(shù)組,如果不是一維數(shù)組則會展開 return_index:如果為true,返回新列表元素在舊列表中的位置(下標),并以列表形式儲 return_inverse:如果為true,返回舊列表元素在新列表中的位置(下標),并以列表形式儲 return_counts:如果為true,返回去重數(shù)組中的元素在原數(shù)組中的出現(xiàn)次數(shù) 數(shù)組元素的添加與刪除九、Numpy位運算
bitwise_and 對數(shù)組元素執(zhí)行位與操作 bitwise_or 對數(shù)組元素執(zhí)行位或操作 invert 按位取反 left_shift 向左移動二進制表示的位 right_shift 向右移動二進制表示的位十、Numpy字符串處理
與python str類型類似
add() 對兩個數(shù)組的逐個字符串元素進行連接 multiply() 返回按元素多重連接后的字符串 center() 居中字符串 capitalize() 將字符串第一個字母轉換為大寫 title() 將字符串的每個單詞的第一個字母轉換為大寫 lower() 數(shù)組元素轉換為小寫 upper() 數(shù)組元素轉換為大寫 split() 指定分隔符對字符串進行分割,并返回數(shù)組列表 splitlines() 返回元素中的行列表,以換行符分割 strip() 移除元素開頭或者結尾處的特定字符 join() 通過指定分隔符來連接數(shù)組中的元素 replace() 使用新字符串替換字符串中的所有子字符串 decode() 數(shù)組元素依次調用str.decode encode() 數(shù)組元素依次調用str.encode十一、Numpy計算類函數(shù)
數(shù)學函數(shù):
NumPy 提供了標準的三角函數(shù):sin()、cos()、tan()。
可以通過 numpy.degrees() 函數(shù)將弧度轉換為角度。
numpy.around() 函數(shù)返回指定數(shù)字的四舍五入值。
numpy.floor() 返回數(shù)字的下舍整數(shù)。
numpy.ceil() 返回數(shù)字的上入整數(shù)。
算數(shù)函數(shù):
NumPy 算術函數(shù)包含簡單的加減乘除:?add(),subtract(),multiply()?和?divide()。
numpy.reciprocal() 函數(shù)返回參數(shù)逐元素的倒數(shù)。
numpy.power() 函數(shù)將第一個輸入數(shù)組中的元素作為底數(shù),計算它與第二個輸入數(shù)組中相應元素的冪。
numpy.mod() 計算輸入數(shù)組中相應元素的相除后的余數(shù)。 函數(shù) numpy.remainder() 也產(chǎn)生相同的結果。
統(tǒng)計函數(shù):
numpy.amin() 用于計算數(shù)組中的元素沿指定軸的最小值。
numpy.amax() 用于計算數(shù)組中的元素沿指定軸的最大值。
numpy.ptp() 函數(shù)計算數(shù)組中元素最大值與最小值的差(最大值 - 最小值)。
numpy.percentile() 百分位數(shù)是統(tǒng)計中使用的度量,表示小于這個值的觀察值的百分比。
numpy.percentile(a, q, axis) a: 輸入數(shù)組 q: 要計算的百分位數(shù),在 0 ~ 100 之間 axis: 沿著它計算百分位數(shù)的軸 第 p 個百分位數(shù)是這樣一個值,它使得至少有 p% 的數(shù)據(jù)項小于或等于這個值,且至少有 (100-p)% 的數(shù)據(jù)項大于或等于這個值。import numpy as np a = np.array([[10, 7, 4], [3, 2, 1]]) print ('我們的數(shù)組是:') print (a)print ('調用 percentile() 函數(shù):') # 50% 的分位數(shù),就是 a 里排序之后的中位數(shù) print (np.percentile(a, 50)) # axis 為 0,在縱列上求 print (np.percentile(a, 50, axis=0)) # axis 為 1,在橫行上求 print (np.percentile(a, 50, axis=1)) # 保持維度不變 print (np.percentile(a, 50, axis=1, keepdims=True))我們的數(shù)組是: [[10 7 4][ 3 2 1]] 調用 percentile() 函數(shù): 3.5 [6.5 4.5 2.5] [7. 2.] [[7.][2.]] numpy.percentile()numpy.median() 函數(shù)用于計算數(shù)組 a 中元素的中位數(shù)(中值)
numpy.mean() 函數(shù)返回數(shù)組中元素的算術平均值。
numpy.average() 函數(shù)根據(jù)在另一個數(shù)組中給出的各自的權重計算數(shù)組中元素的加權平均值。
np.std() 標準差是一組數(shù)據(jù)平均值分散程度的一種度量。
np.var() 方差
十二、Numpy排序與條件篩選
numpy.sort(a, axis, kind, order) a: 要排序的數(shù)組 axis: 沿著它排序數(shù)組的軸,如果沒有數(shù)組會被展開,沿著最后的軸排序, axis=0 按列排序,axis=1 按行排序 kind: 默認為'quicksort'(快速排序) order: 如果數(shù)組包含字段,則是要排序的字段numpy.argsort() 函數(shù)返回的是數(shù)組值從小到大的索引值。numpy.lexsort() 用于對多個序列進行排序。把它想象成對電子表格進行排序,每一列代表一個序列,排序時優(yōu)先照顧靠后的列。msort(a) 數(shù)組按第一個軸排序,返回排序后的數(shù)組副本。np.msort(a) 相等于 np.sort(a, axis=0)。 sort_complex(a) 對復數(shù)按照先實部后虛部的順序進行排序。 partition(a, kth[, axis, kind, order]) 指定一個數(shù),對數(shù)組進行分區(qū) argpartition(a, kth[, axis, kind, order]) 可以通過關鍵字 kind 指定算法沿著指定軸對數(shù)組進行分區(qū)numpy.argmax() 和 numpy.argmin()函數(shù)分別沿給定軸返回最大和最小元素的索引。numpy.nonzero() 函數(shù)返回輸入數(shù)組中非零元素的索引。numpy.where() 函數(shù)返回輸入數(shù)組中滿足給定條件的元素的索引。numpy.extract() 函數(shù)根據(jù)某個條件從數(shù)組中抽取元素,返回滿條件的元素。十三、Numpy字節(jié)交換
在幾乎所有的機器上,多字節(jié)對象都被存儲為連續(xù)的字節(jié)序列。字節(jié)順序,是跨越多字節(jié)的程序對象的存儲規(guī)則。
-  
大端模式:指數(shù)據(jù)的高字節(jié)保存在內存的低地址中,而數(shù)據(jù)的低字節(jié)保存在內存的高地址中,這樣的存儲模式有點兒類似于把數(shù)據(jù)當作字符串順序處理:地址由小向大增加,而數(shù)據(jù)從高位往低位放;這和我們的閱讀習慣一致。
 -  
小端模式:指數(shù)據(jù)的高字節(jié)保存在內存的高地址中,而數(shù)據(jù)的低字節(jié)保存在內存的低地址中,這種存儲模式將地址的高低和數(shù)據(jù)位權有效地結合起來,高地址部分權值高,低地址部分權值低。
 
例如在 C 語言中,一個類型為 int 的變量 x 地址為 0x100,那么其對應地址表達式&x的值為 0x100。且x的四個字節(jié)將被存儲在存儲器的 0x100, 0x101, 0x102, 0x103位置。
numpy.ndarray.byteswap() 函數(shù)將 ndarray 中每個元素中的字節(jié)進行大小端轉換。
十四、副本與視圖
副本是一個數(shù)據(jù)的完整的拷貝,如果我們對副本進行修改,它不會影響到原始數(shù)據(jù),物理內存不在同一位置。
視圖是數(shù)據(jù)的一個別稱或引用,通過該別稱或引用亦便可訪問、操作原有數(shù)據(jù),但原有數(shù)據(jù)不會產(chǎn)生拷貝。如果我們對視圖進行修改,它會影響到原始數(shù)據(jù),物理內存在同一位置。
視圖一般發(fā)生在:
- 1、numpy 的切片操作返回原數(shù)據(jù)的視圖。
 - 2、調用 ndarray 的 view() 函數(shù)產(chǎn)生一個視圖。
 
副本一般發(fā)生在:
- Python 序列的切片操作,調用deepCopy()函數(shù)。
 - 調用 ndarray 的 copy() 函數(shù)產(chǎn)生一個副本。
 
十五、Numpy矩陣
函數(shù)返回一個新的矩陣 numpy.matlib.empty(shape, dtype, order) shape: 定義新矩陣形狀的整數(shù)或整數(shù)元組 Dtype: 可選,數(shù)據(jù)類型 order: C(行序優(yōu)先) 或者 F(列序優(yōu)先)numpy.matlib.zeros() 函數(shù)創(chuàng)建一個以 0 填充的矩陣。numpy.matlib.ones()函數(shù)創(chuàng)建一個以 1 填充的矩陣。函數(shù)返回一個矩陣,對角線元素為 1,其他位置為零。 numpy.matlib.eye(n, M,k, dtype) n: 返回矩陣的行數(shù) M: 返回矩陣的列數(shù),默認為 n k: 對角線的索引 dtype: 數(shù)據(jù)類型 numpy.matlib.identity() 函數(shù)返回給定大小的單位矩陣。numpy.matlib.rand() 函數(shù)創(chuàng)建一個給定大小的矩陣,數(shù)據(jù)是隨機填充的。十六、Numpy線性代數(shù)
對于兩個一維的數(shù)組,計算的是這兩個數(shù)組對應下標元素的乘積和(數(shù)學上稱之為內積);對于二維數(shù)組,計算的是兩個數(shù)組的矩陣乘積;對于多維數(shù)組,它的通用計算公式如下,即結果數(shù)組中的每個元素都是:數(shù)組a的最后一維上的所有元素與數(shù)組b的倒數(shù)第二位上的所有元素的乘積和: dot(a, b)[i,j,k,m] = sum(a[i,j,:] * b[k,:,m])。 numpy.dot(a, b, out=None) a : ndarray 數(shù)組 b : ndarray 數(shù)組 out : ndarray, 可選,用來保存dot()的計算結果numpy.vdot() 函數(shù)是兩個向量的點積。 如果第一個參數(shù)是復數(shù),那么它的共軛復數(shù)會用于計算。numpy.inner() 函數(shù)返回一維數(shù)組的向量內積。對于更高的維度,它返回最后一個軸上的和的乘積。numpy.matmul 函數(shù)返回兩個數(shù)組的矩陣乘積。 雖然它返回二維數(shù)組的正常乘積,但如果任一參數(shù)的維數(shù)大于2,則將其視為存在于最后兩個索引的矩陣的棧,并進行相應廣播。numpy.linalg.det() 函數(shù)計算輸入矩陣的行列式。numpy.linalg.solve() 函數(shù)給出了矩陣形式的線性方程的解。numpy.linalg.inv() 函數(shù)計算矩陣的乘法逆矩陣。?
轉載于:https://www.cnblogs.com/lpapython/p/10885201.html
總結
以上是生活随笔為你收集整理的数据分析之numpy的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: UIBackgroundTaskIden
 - 下一篇: maven打包不用eclipse插件