我正在尝试实现迭代删除矩阵的某些行和列的算法,并继续处理剩余的子矩阵。但是,我想知道原始矩阵中的值的索引而不是剩余的子矩阵。
例如,假设使用
构建矩阵x
x = np.arange(9).reshape(3, 3)
现在,我想在下面定义的子矩阵中找到等于8的元素的索引:
np.where(x[1:, 1:] == 8)
默认情况下,numpy
返回(array[1], array[1])
,因为它在切片的子矩阵中找到元素。我喜欢返回的是(array[2], array[2])
,它是原始矩阵中的索引8。
这个问题的有效解决方案是什么?
P.S。
答案 0 :(得分:0)
我最近了解了indexing with arrays,其中可以使用另一个numpy
数组选择矩阵的子矩阵。我认为我能解决的问题是将子矩阵的索引映射到索引数组的元素。
例如,在上面的示例中,子矩阵可以像这样定义:
row_idx = np.array([1, 2])
col_idx = np.array([1, 2])
np.where(x[row_idx[:, None], col_idx] == 8)
这仍将返回相同的(array[1], array[1])
输出,但我可以使用这些索引查找row_idx
和col_idx
的元素,以便在原始矩阵中找到相应的索引,即row_idx[1]
和col_idx[1]
。