我希望将两个数组合并成一个新的数组,并在O(1)时间内完成。然后,我想更改此新数组中的值以更改旧数组中的值。
这是在PyGame的surfarray模块的背景下,该模块没有返回RGBA(n * m * 4)数组的函数 - 只有RGB(n * m * 3)和A(n * m)数组分别存在。理想情况下,我将创建一个新数组“RGBA”,它在O(1)中引用“RGB”和“A”数组。更改“RGBA”会更改“RGB”和“A”,从而更改表面。
我不知道是否可能,因为我无法想出使用C完成它的方法。但是,我可以想到一些想法。例如,也许有一种numpy数组类型,封装了一些子数组,并在C级别上将索引重定向到正确的子数组。这将是很好的。
这是在PyGame的surfarray模块的背景下,该模块没有返回RGBA(n * m * 4)数组的函数 - 只有RGB(n * m * 3)和A(n * m)数组分别存在。理想情况下,我将创建一个新数组“RGBA”,它在O(1)中引用“RGB”和“A”数组。更改“RGBA”会更改“RGB”和“A”,从而更改表面。
我不知道是否可能,因为我无法想出使用C完成它的方法。但是,我可以想到一些想法。例如,也许有一种numpy数组类型,封装了一些子数组,并在C级别上将索引重定向到正确的子数组。这将是很好的。
ndarray
- 请参阅http://docs.scipy.org/doc/numpy/user/basics.subclassing.html - Andrew Marshalluint8
视图之前,尝试使用dtype
为'<u4'
或'>u4'
的反向字节序的原始数组视图。除非您复制了该数组,否则它可能无法正常工作,但是尝试一下可能值得。 - Jaime