我有一个 ndarray:
ndaM = np.array([[1,2,3],[4,5,6],[7,8,9]]);
以及一个由 0 和 1 组成的向量:
vSet = [0,1,1];
如何使用vSet
提取仅包含vSet
中索引非零的行和列的子矩阵?在这种情况下,矩阵
[[5,6],[8,9]]
最佳答案
这是一种使用np.ix_
一次性切片的解决方案
ndaM[np.ix_(*2*(np.array(vSet, bool),))]
# array([[5, 6],
# [8, 9]])
或者更容易阅读的两行
mask = np.array(vSet, bool)
ndaM[np.ix_(mask, mask)]
关于python - 使用 boolean 向量提取 ndarray 的子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43060241/