使用布尔向量提取nArray的子数组

2024-09-30 01:21:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有个约定:

ndaM = np.array([[1,2,3],[4,5,6],[7,8,9]]);

以及0和1的向量:

^{pr2}$

如何使用vSet来提取索引在^{中不为零的行和列的子矩阵?在这种情况下,矩阵

[[5,6],[8,9]]

Tags: np情况矩阵array向量行和列pr2vset
2条回答

您可以使用两步切片:

# convert vSet to a boolean array
bSet = np.array(vSet).astype(bool)

# slice in two steps, rows first, then columns
ndaM[bSet][:, bSet]

#array([[5, 6],
#       [8, 9]])

或者使用np.ix_创建索引网格,然后使用它来索引:

^{pr2}$

下面是一个使用np.ix_一次性切片的解决方案

ndaM[np.ix_(*2*(np.array(vSet, bool),))]
# array([[5, 6],
#        [8, 9]])

或者用更易读的两行

^{pr2}$

相关问题 更多 >

    热门问题