2 回答

TA貢獻(xiàn)1829條經(jīng)驗 獲得超7個贊
In [382]: a = np.array([[1,2,3], [4,5,6]])
In [383]: a
Out[383]:
array([[1, 2, 3],
[4, 5, 6]])
In [384]: a.ravel()
Out[384]: array([1, 2, 3, 4, 5, 6])
ravel 給出數(shù)組的一維視圖 - 并按照它們在數(shù)據(jù)緩沖區(qū)中出現(xiàn)的順序顯示值。
In [385]: a.T
Out[385]:
array([[1, 4],
[2, 5],
[3, 6]])
In [386]: a.T.ravel()
Out[386]: array([1, 4, 2, 5, 3, 6])
ravel 轉(zhuǎn)置以不同順序顯示元素 - 除非我們將順序指定為“F”(或“K”)。
In [387]: a.T.ravel(order='F')
Out[387]: array([1, 2, 3, 4, 5, 6])
ravel(和其他操作)使 a viewif 數(shù)組可以使用原始數(shù)據(jù),僅更改shape和strides。如果它不能,它必須制作一個副本。
由于轉(zhuǎn)置元素順序發(fā)生了這種變化,因此使用 以外的其他內(nèi)容進(jìn)行索引會[0]選擇不同的值:
In [397]: a.ravel()[3]
Out[397]: 4 # -1 in your Out[8]
In [398]: a.T.ravel()[3]
Out[398]: 5
當(dāng)您要求更改轉(zhuǎn)置的第 4 個元素時,您會發(fā)現(xiàn)存在一定的歧義。它可能因您遍歷元素的方式而異。
添加回答
舉報