gpt4 book ai didi

python - 强制执行 numpy 数组的内存转置

转载 作者:太空宇宙 更新时间:2023-11-03 11:19:56 25 4
gpt4 key购买 nike

<分区>

我正在将 C 库与 python 连接。我在 numpy 中有数组,我使用数组的 ctypes 属性传递给库。

在某些时候,我需要向 C 库提供一个数组,它应该是我拥有的 numpy 数组 a 的转置。 (另一种说法是 C 库不接受最内层维度的步幅)。但是,当我传递 a.T 而不是 a 时,没有任何反应。

确实,numpy 似乎通过简单地交换步幅来进行某种惰性转置:

import ctypes
import numpy as np
a = np.zeros((2, 3))
a.ctypes.strides_as(ctypes.c_longlong)[:]
# returns [24, 8]
a.T.ctypes.strides_as(ctypes.c_longlong)[:]
# return [8, 24]

我的问题是,如何在内存中强制执行这种转置?

编辑

我注意到了

a.T + np.zeros(a.T.shape)

按照我的意愿重新排序内存,但如果有更优雅和明确的解决方案,我仍然想听听。

(另外,有趣的是,

a.T + np.zeros_like(a.T)

似乎重新排序内存)。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com