假设给你一个 numpy 数组
x = np.array([[1,2],[3,4]], dtype=np.int8)
让我们来看看它的转置。
y = x.T
我对 numpy 文档的理解是,转置只修改了数组的步幅,而不是它的底层数据缓冲区。
我们可以通过运行来验证
>> x.data.strides
(2, 1)
>> y.data.strides
(1, 2)
但是,数据似乎也被修改了
>> x.data.tobytes()
b'\x01\x02\x03\x04'
>> y.data.tobytes()
b'\x01\x03\x02\x04'
根据我的理解,当预期的行为应该是y
的数据缓冲区与 的数据缓冲区保持一致时x
,只有步幅发生变化。
为什么我们看到不同的数据缓冲区y
?也许该data
属性没有显示底层内存布局?