如果我有一个 numpy ndarray,例如 A
,其数据缓冲区是 C 连续的。现在我想获得这个矩阵的 View ,具有已知的偏移量、形状和步幅,我该怎么做?
例如,如果我有:
import numpy
A = numpy.zeros((100, 100))
假设我想得到一个矩阵B
,它是A
的 View ,其相对于A
的偏移量是880字节,对于形状 (10, 20) 和步幅 (8, 800),我可以执行以下操作:
B = A[1:21, 10:20].T
有没有一种方法可以在一般情况下获得这样的 View 矩阵?我想有三种可能的方法,其中任何一种都对我有好处:
- 提出像上面这样的一系列变换来构造 View 矩阵
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/