我正在对数组元素的子集使用函数np.argwhere()
,但我需要它返回满足条件的元素的索引(相对于原始数组,而不是片).有没有办法做到这一点?
示例代码如下:
A = np.array([1,2,3,4,5,6,7,8,9])
i = [0, 3, 6, 7, 8]
np.argwhere(A[i] < 8)
Output: array([[0], [1], [2]])
我想要的输出是
array([[0], [3], [6]])
个
我正在对数组元素的子集使用函数np.argwhere()
,但我需要它返回满足条件的元素的索引(相对于原始数组,而不是片).有没有办法做到这一点?
示例代码如下:
A = np.array([1,2,3,4,5,6,7,8,9])
i = [0, 3, 6, 7, 8]
np.argwhere(A[i] < 8)
Output: array([[0], [1], [2]])
我想要的输出是
array([[0], [3], [6]])
个
np.argwhere
给你的指数是in the slice.我们已经知道如何将片中的索引转换为数组中的索引:片中的索引x
对应于数组中的索引i[x]
,因此我们只需将结果为np.argwhere
的索引转换为i
!
A = np.array([1,2,3,4,5,6,7,8,9])
i = np.array([0, 3, 6, 7, 8])
slice_lt8 = np.argwhere(A[i] < 8)
arr_lt8 = i[slice_lt8]
arr_lt8
现在是所需的值:
array([[0],
[3],
[6]])