2 回答

TA贡献1829条经验 获得超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 给出数组的一维视图 - 并按照它们在数据缓冲区中出现的顺序显示值。
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 转置以不同顺序显示元素 - 除非我们将顺序指定为“F”(或“K”)。
In [387]: a.T.ravel(order='F')
Out[387]: array([1, 2, 3, 4, 5, 6])
ravel(和其他操作)使 a viewif 数组可以使用原始数据,仅更改shape和strides。如果它不能,它必须制作一个副本。
由于转置元素顺序发生了这种变化,因此使用 以外的其他内容进行索引会[0]选择不同的值:
In [397]: a.ravel()[3]
Out[397]: 4 # -1 in your Out[8]
In [398]: a.T.ravel()[3]
Out[398]: 5
当您要求更改转置的第 4 个元素时,您会发现存在一定的歧义。它可能因您遍历元素的方式而异。
添加回答
举报