繁体   English   中英

如何将numpy ndarray转换到位?

[英]How to transpose numpy ndarray in place?

我正在使用numpy。

我有一个形状为[T,H,W,C]的ndarray,我想把它转换为:[T,C,H,W]。 但是,这个阵列非常庞大,我想要节省内存。

但我刚发现np.transpose来做这个不到位的

为什么像np.transpose这样的操作没有它们的原位对应物?

我曾经认为任何名为np.Bar操作都会有一个名为np.Bar的就地对象, np.Bar_发现这不是事实。

来自np.transpose docs

尽可能返回视图。

意味着没有为输出数组分配额外的内存。

>>> import numpy as np

>>> A = np.random.rand(2, 3, 4, 5)
>>> B = np.transpose(A, axes=(0, 3, 1, 2))

>>> A.shape
(2, 3, 4, 5)
>>> B.shape
(2, 5, 3, 4)

您可以使用np.shares_memory来检查B是否是A的视图:

>>> np.shares_memory(A, B)
True

因此,您可以使用np.transpose安全地转置数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM