我已經開始學習numpy,我正在瀏覽一些簡單的例子,我遇到了numpy陣列的形狀變化。我們如何用矩陣來解釋numpy陣列?
如果我有一個例子 -
import numpy as np
a = np.zeros(5)
a.形狀
回傳(5,)
print(a) 回傳
array([0., 0., 0., 0.])
這是否意味著它有5行1列,或者5列1行?
此外,如果我寫
a.shape = (5, 1)
print(a)
array([[0.],
[0.]。
[0.]。
[0.]。
[0.]])
我對numpy陣列的形狀有點迷惑。希望得到任何幫助。
uj5u.com熱心網友回復:
在numpy中,shape tuple回傳一個元組(m, n),m指的是 "行的數量",而n指的是列的數量。
因此(5, 1)將是5行和1列。
而(5,)只是一個1d陣列,5行...。但是一個1D的向量并不是由列和行的數量來決定的,因為它并沒有嵌套。它只是一個有五個元素的陣列。
正如 @TimRoberts 提到的,numpy 陣列可以有任意多的維數。比如影像,形狀是一個有3個元素的元組,也就是行、列和通道,對于RGB來說,它將有3個通道,對于RGBA來說,它將是4個通道。這將是一個3D陣列的例子。
uj5u.com熱心網友回復:
格式是(m, n),其中m是行的數量,n是2d陣列的列的數量。
然而你的情況是一個1d陣列,這就是為什么你得到(m,)。這基本上意味著它既不是行也不是列,只是五個專案,像一個串列。在這種情況下沒有第二維。
uj5u.com熱心網友回復:
讓我們做一個有12個專案的1d陣列:
在 [150]: a = np.range(12)
在[151]: a
輸出[151]。array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] )
重塑為2d。 這是view,形狀是不同的,但它共享資料緩沖區。
在[152]: a.reshape(3,4)
Out[152]。
array([ [0, 1, 2, 3],
[4, 5, 6, 7] 。
[8, 9, 10, 11] ])
另一種觀點,3D:
在[153]:a.reshape(2,3, 2)
Out[153]。
array([[0, 1],
[2, 3] 。
[4, 5]]。
[[ 6, 7] 。
[8, 9]。
[10, 11]])
還是一個2d視圖:
在[154]: a.reshape(6,2)
Out[154]。
array([ [0, 1],
[2, 3] 。
[4, 5]。
[6, 7]。
[8, 9]。
[10, 11]])
或者一個3D:
在[155]:a.reshape(1,1, 12)
Out[155]。array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]])
a.reshape(1,12,1,1)會占用更多空間。 :)
為了進一步迷惑你,一個具有不同順序的視圖:
在[156]: a.reshape(3,4, order='F)
Out[156]。
array([ [0, 3, 6, 9],
[1, 4, 7, 10] 。
[2, 5, 8, 11] ])
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/309477.html
標籤:
下一篇:計算組內獨特組合的重量
