布尔索引

作者: 庵下桃花仙 | 来源:发表于2019-01-15 22:29 被阅读7次

布尔值数组的长度必须和数组轴索引长度一致。

In [1]: import numpy as np

In [2]: names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])

In [3]: data = np.random.randn(7, 4)

In [4]: names
Out[4]: array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'], dtype='<U4')

In [5]: data
Out[5]:
array([[ 1.1110709 , -0.47574111, -0.32405598,  1.68851732],
       [ 0.18338712,  1.86099602,  0.16028324, -0.77338395],
       [ 1.30208873,  0.05613606,  0.09993033,  0.9296732 ],
       [-2.37345175,  0.7715262 ,  0.30284201, -0.11449909],
       [ 1.15309792,  0.57371153, -0.16297593, -0.922199  ],
       [ 0.30940118, -0.75740561, -0.30268499, -1.49159479],
       [ 1.30522225, -0.18000825,  0.40052368, -1.6624808 ]])

In [6]: names == 'Bob'
Out[6]: array([ True, False, False,  True, False, False, False])

In [7]: data[names == 'Bob']
Out[7]:
array([[ 1.1110709 , -0.47574111, -0.32405598,  1.68851732],
       [-2.37345175,  0.7715262 ,  0.30284201, -0.11449909]])
In [8]: data[names == 'Bob', 2:]
Out[8]:
array([[-0.32405598,  1.68851732],
       [ 0.30284201, -0.11449909]])

In [9]: data[names == 'Bob', 3]
Out[9]: array([ 1.68851732, -0.11449909])

In [10]: names != 'Bob'
Out[10]: array([False,  True,  True, False,  True,  True,  True])

In [11]: data[~(names == 'Bob')]
Out[11]:
array([[ 0.18338712,  1.86099602,  0.16028324, -0.77338395],
       [ 1.30208873,  0.05613606,  0.09993033,  0.9296732 ],
       [ 1.15309792,  0.57371153, -0.16297593, -0.922199  ],
       [ 0.30940118, -0.75740561, -0.30268499, -1.49159479],
       [ 1.30522225, -0.18000825,  0.40052368, -1.6624808 ]])

In [12]: cond = names == 'Bob'

In [13]: cond
Out[13]: array([ True, False, False,  True, False, False, False])

In [14]: data[~cond]
Out[14]:
array([[ 0.18338712,  1.86099602,  0.16028324, -0.77338395],
       [ 1.30208873,  0.05613606,  0.09993033,  0.9296732 ],
       [ 1.15309792,  0.57371153, -0.16297593, -0.922199  ],
       [ 0.30940118, -0.75740561, -0.30268499, -1.49159479],
       [ 1.30522225, -0.18000825,  0.40052368, -1.6624808 ]])

In [15]: mask = (names == 'Bob') | (names == 'Will')

In [16]: mask
Out[16]: array([ True, False,  True,  True,  True, False, False])

In [17]: data[mask]
Out[17]:
array([[ 1.1110709 , -0.47574111, -0.32405598,  1.68851732],
       [ 1.30208873,  0.05613606,  0.09993033,  0.9296732 ],
       [-2.37345175,  0.7715262 ,  0.30284201, -0.11449909],
       [ 1.15309792,  0.57371153, -0.16297593, -0.922199  ]])

使用布尔值索引选择数据时,总是生成数据的拷贝,即使返回的数组没有任何变化。使用 & 和 | 代替Python中的关键字and和or

In [18]: data[data < 0] = 0

In [19]: data
Out[19]:
array([[1.1110709 , 0.        , 0.        , 1.68851732],
       [0.18338712, 1.86099602, 0.16028324, 0.        ],
       [1.30208873, 0.05613606, 0.09993033, 0.9296732 ],
       [0.        , 0.7715262 , 0.30284201, 0.        ],
       [1.15309792, 0.57371153, 0.        , 0.        ],
       [0.30940118, 0.        , 0.        , 0.        ],
       [1.30522225, 0.        , 0.40052368, 0.        ]])

In [20]: data[names != 'Joe'] = 7

In [21]: data
Out[21]:
array([[7.        , 7.        , 7.        , 7.        ],
       [0.18338712, 1.86099602, 0.16028324, 0.        ],
       [7.        , 7.        , 7.        , 7.        ],
       [7.        , 7.        , 7.        , 7.        ],
       [7.        , 7.        , 7.        , 7.        ],
       [0.30940118, 0.        , 0.        , 0.        ],
       [1.30522225, 0.        , 0.40052368, 0.        ]])

相关文章

  • Numpy布尔索引和花式索引

    Numpy布尔索引和花式索引 布尔索引:指的是一个由布尔值组成的数组可以作为一个数组的索引,返回的数据为True值...

  • 布尔索引

    布尔值数组的长度必须和数组轴索引长度一致。 使用布尔值索引选择数据时,总是生成数据的拷贝,即使返回的数组没有任何变...

  • Pandas数据操作

    Pandas数据操作 Series索引 行索引 切片索引 不连续索引 布尔索引 DataFrame索引 列索引 不...

  • pandas学习-2

    Pandas数据结构Series:索引 位置下标 / 标签索引 / 切片索引 / 布尔型索引

  • 1.4 Numpy索引及切片

    1---一维数组索引及切片 2---二维数组索引及切片 3---布尔型索引及切片 布尔型 条件判断

  • 跟我学numpy(3)

    索引 一维 多维 普通索引 布尔索引 花式索引 切片 一维 多维 更改数组的值

  • 2.3 数据结构Series:索引

    【课程2.3】 Pandas数据结构Series:索引位置下标 / 标签索引 / 切片索引 / 布尔型索引 1-...

  • pandas 索引

    索引方式 布尔索引 位置索引: df.iloc,Selection by Position,即按位置选择数据,即第...

  • NumPy 高级索引和数组概念

    NumPy 高级索引和数组概念 调整图像尺寸 创建视图及副本 翻转图像 花式索引 将位置列表用于索引 布尔索引 分...

  • 超级搜索术10——高级搜索

    建立高级搜索式,才能玩转搜索引擎,什么是搜索式,说白了就是我们向搜索引擎发出的搜索指令。 一、搜索的布尔逻辑 布尔...

网友评论

    本文标题:布尔索引

    本文链接:https://www.haomeiwen.com/subject/xqvudqtx.html