如果我有一个numpy ndarray,请说A,其数据缓冲区是C连续的。现在,我想以已知的偏移,形状和步幅查看此矩阵的视图,该怎么办?

例如,如果我有:

import numpy
A = numpy.zeros((100, 100))


假设我想得到一个矩阵B,它是A的视图,相对于A的偏移量为880个字节,形状为(10,20),跨度为(8,800),我可以请执行下列操作:

B = A[1:21, 10:20].T


在一般情况下,是否有一种获取这种视图矩阵的方法?我猜有三种可能的方法,其中任何一种对我都有好处:


提出与上述类似的一系列转换以构造视图矩阵B?的通用过程。
构造一个具有手动指定的起始地址,偏移量,形状和步幅的ndarray?
我在C ++中具有上述四件事,因此我也可以调用Python C API来构造这样的ndarray。


顺便说一句,我还想知道B的哪个属性记录其相对于A起始地址的偏移量?

最佳答案

如果要完全控制所有内容,则可以直接使用np.ndarray构造函数,并执行以下操作:

B = np.ndarray(shape=(10, 20), dtype=A.dtype, buffer=A, offset=880,
               strides=(8, 800))

关于python - 获取满足特定形状和步幅约束的ndarray的 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28446805/

10-13 03:37