【发布时间】:2022-01-17 14:57:46
【问题描述】:
我想要一种方法来索引 d 维 numpymeshgrid:
- 实际上没有将完整的密集网格存储在内存中
- 支持全密集网格网格支持的所有索引类型
举个例子:
x = np.random.randn(Nx)
y = np.random.randn(Ny)
z = np.random.randn(Nz)
x_g, y_g, z_g = np.meshgrid(x, y, z, indexing='ij')
X = np.concatenate([x_g[..., None], y_g[..., None], z_g[..., None]], axis=-1)
一旦我有了X,我就可以使用numpy的所有索引方法,例如:
X[10:20,1:9:3,:]
X[(
[0, 1, 3, 5],
[1, 1, 3, 3],
[2, 7, 8, 9]
)]
在某些情况下,产品 Nx * Ny * Nz 太大而无法放入内存(例如 Nx = Ny = Nz = 4000),但我希望能够使用索引取出我的多维数据集。
有没有一种方法可以在不重新编码 numpy 的索引逻辑的情况下实现这一点? 3d 中的答案如下所示:
def meshgrid_index(x, y, z, index):
# index is the argument normally passed to X.__getitem__
# should support all types of indexing
...
谢谢!
【问题讨论】:
标签: python numpy indexing large-data