NumPy多维数组的mask掩码索引

您所在的位置:网站首页 python建立一个二维数组 NumPy多维数组的mask掩码索引

NumPy多维数组的mask掩码索引

2023-12-29 07:34| 来源: 网络整理| 查看: 265

参考链接: Boolean or “mask” index arrays

在这里插入图片描述 说明:通过逻辑判断符号可以得到一个mask掩码,其值是True或者False,并且维度和原来的多维数组相同.使用mask来索引得到的是一个一维数组,筛选出True位置对应的元素.通过mask掩码就可以对原多维数组进行修改.但是如果将mask筛选出的内容赋值给一个变量的话,无法通过这个变量来修改原来的多维数组,他们互不影响. 实验1:

(base) PS C:\Users\chenxuqi> python Python 3.7.4 (default, Aug 9 2019, 18:34:13) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import numpy as np >>> z = np.arange(12).reshape(3,4) >>> z array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) >>> mask4cxq = z > 6 >>> mask4cxq array([[False, False, False, False], [False, False, False, True], [ True, True, True, True]]) >>> z[mask4cxq] array([ 7, 8, 9, 10, 11]) >>> a = z[mask4cxq] >>> a array([ 7, 8, 9, 10, 11]) >>> z array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) >>> a[0] = 20200910 >>> a array([20200910, 8, 9, 10, 11]) >>> z array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) >>> z[mask4cxq] = 8888888 >>> z array([[ 0, 1, 2, 3], [ 4, 5, 6, 8888888], [8888888, 8888888, 8888888, 8888888]]) >>> a array([20200910, 8, 9, 10, 11]) >>> >>>

实验2: 掩码mask与整数索引混合使用

Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license()" for more information. >>> import numpy as np >>> z = np.arange(12).reshape(3,4) >>> z array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) >>> mask4cxq = z > 6 >>> mask4cxq array([[False, False, False, False], [False, False, False, True], [ True, True, True, True]]) >>> z[mask4cxq] array([ 7, 8, 9, 10, 11]) >>> z[mask4cxq] = 20200910 >>> z array([[ 0, 1, 2, 3], [ 4, 5, 6, 20200910], [20200910, 20200910, 20200910, 20200910]]) >>> z[z >> z array([[ 888, 888, 888, 888], [ 4, 5, 6, 20200910], [20200910, 20200910, 20200910, 20200910]]) >>> >>> >>> >>> z = np.arange(12).reshape(3,4) >>> z array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) >>> z[...,0][z[...,0] > 1] = 20200910 # 只修改某一列 >>> z array([[ 0, 1, 2, 3], [20200910, 5, 6, 7], [20200910, 9, 10, 11]]) >>> >>> >>> z = np.arange(12).reshape(3,4) >>> z array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) >>> z[z[...,1]>4] array([[ 4, 5, 6, 7], [ 8, 9, 10, 11]]) >>> z[z[...,1]>4,1] array([5, 9]) >>> # 只修改某一列 >>> z[z[...,1]>4,1] = 20200910 >>> z array([[ 0, 1, 2, 3], [ 4, 20200910, 6, 7], [ 8, 20200910, 10, 11]]) >>> >>> z = np.arange(12).reshape(3,4) >>> z array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) >>> z[..., 1:][z[..., 1:]>> z array([[ 0, 20200910, 20200910, 20200910], [ 4, 20200910, 20200910, 20200910], [ 8, 20200910, 10, 11]]) >>> >>> >>>


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3