python - 使用 boolean 向量提取 ndarray 的子数组

标签 python numpy indexing boolean slice

我有一个 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/

相关文章:

jquery - 使用 jQuery .append 并获取当前索引()

python - Pandas 数据透视表删除行

python - 索引多个数组

python - yield 如何确定它的迭代完成了一次。?

python - 在不加载到内存的情况下查找保存的 numpy 数组(.npy 或 .npz)的形状

python - 将浮点值分配给数组 : ("' numpy. float6 4' object does not support item assignment"、 'occurred at index 4' 时出现以下错误

python - 如何在tensorflow中处理大量数据?

c# - access sql 创建前检查索引是否存在

python - 如何使用 Folium 创建动画?

python - 在 Python 中将列表字典写入 csv