假设我有一个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, :]
因为缺少索引与切片同义:
(获取所有内容)。
现在,您可以将蒙版仅应用于第二维:
result = a[:, m]
您也可以先将掩码转换为索引。两种方法之间存在细微的差异,在这种简单情况下您不会看到。最大的区别通常是线性索引要快一些,尤其是如果多次应用:
i = np.flatnonzero(m)
result = a[:, i]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句