python - 使用 bool 向量选择 Numpy 二维数组中的行

标签 python numpy

我有一个矩阵和一个 bool 向量:

>>>from numpy import *
>>>a = arange(20).reshape(4,5)
array([[ 0,  1,  2,  3,  4],
   [ 5,  6,  7,  8,  9],
   [10, 11, 12, 13, 14],
   [15, 16, 17, 18, 19]])

>>>b = asarray( [1, 1, 0, 1] ).reshape(-1,1)
array([[1],
   [1],
   [0],
   [1]])

现在我想选择该矩阵中所有对应的行,其中向量中的对应索引等于零。

>>>a[b==0]
array([10])

我怎样才能让它返回这个特定的行?

[10, 11, 12, 13, 14]

最佳答案

b 的形状有点奇怪,但如果你能将它设计成一个更好的索引,它就是一个简单的选择:

idx = b.reshape(a.shape[0])
print a[idx==0,:]

>>> [[10 11 12 13 14]]

您可以将其理解为“选择索引为 0 的所有行,并为所选的每一行获取所有列”。您的预期答案实际上应该是一个列表列表,因为您要求的是符合条件的所有行。

关于python - 使用 bool 向量选择 Numpy 二维数组中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16201536/

相关文章:

python - Matplotlib 动画要么在几帧后卡住,要么就是不工作

python - 使用 Visual Studio 2017 命令行痛饮和构建项目

python - sqlite同时多次写入

python - 拆分字符串,忽略引号内的定界符(python)

python - 尝试在 Windows 7 中的 Anaconda(python) 上安装 pymc 并出现奇怪的错误?

python - 如何获得 3-D 阵列中局部最大值周围的区域?

python - Pandas DatetimeIndex 截断错误

python - Flask sqlalchemy 检查 db.session 中的对象是否准备好提交

python - 为什么我无法在 Python 中正确地将项目添加到列表中?

python - numpy append_field 为具有 2d 形状的新字段提供形状错误