【发布时间】:2024-04-29 20:10:05
【问题描述】:
我已经阅读了关于切片的 numpy 文档(尤其是它讨论变量数组索引的底部) https://docs.scipy.org/doc/numpy/user/basics.indexing.html
但我仍然不确定如何执行以下操作:编写一个返回 3D 索引集或 4D 索引集的方法,然后用于访问数组。我想为基类编写一个方法,但是从它派生的类可以访问 3D 或 4D,具体取决于实例化的派生类。
示例代码来说明想法: 将 numpy 导入为 np
a = np.ones([2,2,2,2])
size = np.shape(a)
print(size)
for i in range(size[0]):
for j in range(size[1]):
for k in range(size[2]):
for p in range(size[3]):
a[i,j,k,p] = i*size[1]*size[2]*size[3] + j*size[2]*size[3] + k*size[3] + p
print(a)
print('compare')
indices = (0,:,0,0)
print(a[0,:,0,0])
print(a[indices])
简而言之,我正在尝试获取一个元组(或其他东西),该元组可用于根据我填充元组的方式进行以下两种访问:
a[i, 0, :, 1]
a[i, :, 1]
切片方法看起来很有希望,但它似乎需要一个范围,我只想要一个“:”,即整个维度。变量 numpy 数组维度访问有哪些选项?
【问题讨论】:
-
使用
slice(None)而不是:。 -
或
idx = np.s_[i, 0, :, 7]、a[idx]等 -
@hpaulj 那行得通。你能提交完整的答案吗?