如何解决根据一行中的值选择numpy列
假设我有一个包含2行10列的numpy数组。我想在第一行中选择具有偶数值的列。我想要的结果如下:
a = list(range(10))
b = list(reversed(range(10)))
c = np.concatenate([a,b]).reshape(2,10).T
c[c[:,0] % 2 == 0].T
但是,此方法转置两次,我不认为它是非常pythonic的。有没有办法做同样的工作清洁器?
解决方法
Numpy允许您分别沿每个维度进行选择。您传入长度为维数的索引元组。
说你的数组是
a = np.random.randint(10,size=(2,10))
第一行中的偶数元素由掩码给出
m = (a[0,:] % 2 == 0)
您可以使用a[0]
而不是a[0,:]
来获取第一行,因为丢失的索引与切片:
同义(获取所有内容)。
现在,您可以将蒙版仅应用于 second 维度:
result = a[:,m]
您还可以先将掩码转换为索引。两种方法之间存在细微的差异,在这种简单情况下您不会看到。最大的不同通常是线性索引要快一些,尤其是如果多次应用:
i = np.flatnonzero(m)
result = a[:,i]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。