我有一堆形状可能不同的numpy数组:

[[1, 1, 1, 1, 1],
 [1, 1, 1, 1, 1],
 [1, 1, 1, 1, 1],
 [1, 1, 1, 1, 1]]


我需要选择索引并将其存储到变量中,以便可以将数组更改为:

[[1, 1, 1, 1, 1],
 [1, 1, 1, 1, 0],
 [1, 1, 1, 1, 0],
 [0, 0, 0, 0, 0]]


我可以获取垂直索引:

idx = np.s_[1:4, 3]


但是我不知道如何从最后一行添加所有索引并将其存储到idx

更新资料

我想要索引。有时我需要引用这些索引中的值,并且有时我想更改那些索引中的值。拥有索引将使我能够灵活地同时执行这两个操作。

最佳答案

我不知道内置的NumPy方法,但是也许可以做到:

import numpy as np

a = np.random.rand(16).reshape((4, 4))   # Test matrix (4x4)
inds_a = np.arange(16).reshape((4, 4))   # Indices of a
idx = np.s_[0:3, 3]     # Vertical indices
idy = np.s_[3, 0:3]     # Horizontal indices

# Construct slice matrix
bools = np.zeros_like(a, dtype=bool)
bools[idx] = True
bools[idy] = True

print(a[bools])         # Select slice from matrix
print(inds_a[bools])    # Indices of sliced elements

关于python - 自定义NumPy切片,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54007291/

10-16 04:51