知行编程网知行编程网  2022-10-09 12:00 知行编程网 隐藏边栏  23 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于Python之numpy中mask选取子集的相关知识,希望可以帮到处于编程学习途中的小伙伴

有新手不知道如何在 numpy 中使用掩码。今天就来说说使用口罩时遇到的一些问题。


numpy中

矩阵选取


子集

或者

以条件选取子集

,用mask是一种很好的方法。


简单来说就是用

bool类型



indice矩阵

去选择。

<p><span>mask = np.ones(X.shape[0], dtype=bool)
X[mask].shape
mask.shape
mask[indices[0]] = False
mask.shape
X[mask].shape
X[~mask].shape
(678, 2)
(678,)
(678,)
(675, 2)
(3, 2)<br/></span></p>


例如我们这里用来选取

全部点中KNN选取的点

以及所有剩余的点。

<p><span>from sklearn.neighbors import NearestNeighbors
nbrs = NearestNeighbors(10).fit(X)
_,indices = nbrs.kneighbors(X)
mask = np.ones(X.shape[0], dtype=bool)
mask[indices[0]] = False
plt.scatter(X[mask][:,0],X[mask][:,1],c='g')
plt.scatter(X[~mask][:,0],X[~mask][:,1],c='r')<br/></span></p>

Python numpy 中的掩码选择子集


带条件选择替换,比如我们需要将a矩阵内某条件的行置换为888剩余置换为999,可以直接用

mask

或者再用

where

一步搞定:

<p><span>mask = np.ones(a.shape,dtype=bool) #np.ones_like(a,dtype=bool)
mask[indices] = False
a[~mask] = 999
a[mask] = 888
#############
np.where(mask, 888, 999)<br/></span></p>


这简单吗?你学会了吗?更多Python学习推荐:



本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享