numpy 如何筛选符合条件的行?

例如,有一个ndarray,第一列是数字[3,2,11,7,4,22,56]。想根据这列数字的范围对每一行数据进行分类,比如在0~10就是第一类,11…
关注者
2
被浏览
6,328
登录后你可以
不限量看优质回答 私信答主深度交流 精彩内容一键收藏

可以用np.argwhere + advanced indexing

写个例子:

arr = np.array([[3,2,11,7,4,22,56], [0]*7]).T  
idx = np.argwhere(np.logical_and(0<=arr[:,0], arr[:,0]<=10)).squeeze()
arr[idx] # output the 0-10 class

提一下里面的几个点:

  1. np.where , np.argwhere : 前者是找到符合条件的部分,后者是找到符合条件部分的index. 这些都很常用,多用就熟练了。
  2. np.logical_and 是对数组求 element-wise 的 and
  3. advanced indexing 多了解一下