Numpy根据条件选择行

rt4zxlrg  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(75)

我想从二维numpy数组中删除行,对第一行的值使用条件。
我可以用常规的python使用两个循环来完成这一任务,但我想用numpy更有效地完成这一任务,例如。关于numpy.where
我一直在尝试使用numpy.wherenumpy.delete做各种事情,但我很难只对第一列应用一个条件。
下面是一个例子,我只想保留每行第一个值为6的行。
输入:

[[0,4],
 [0,5],
 [3,5],
 [6,8],
 [9,1],
 [6,1]]

输出量:

[[6,8],
 [6,1]]
nnsrf1az

nnsrf1az1#

使用布尔掩码:

mask = (z[:, 0] == 6)
z[mask, :]

这比np.where高效得多,因为您可以直接使用布尔掩码,而无需先将其转换为索引数组。
一个内衬:

z[z[:, 0] == 6, :]
kpbwa7wx

kpbwa7wx2#

项目:

import numpy as np
np_array = np.array([[0,4],[0,5],[3,5],[6,8],[9,1],[6,1]])
rows=np.where(np_array[:,0]==6)
print(np_array[rows])

输出量:

[[6 8]
 [6 1]]

如果你想进入2D列表使用

np_array[rows].tolist()

2D列表的输出

[[6, 8], [6, 1]]

相关问题