运算库之numpy(神奇索引和逻辑运算)

1.神奇索引:
    在上一个博客中讲到,一些索引的使用方法,但是当遇到一些特殊的需求的时候,就不能实现数据的快速索引和修改了。因此,这里我们引出神奇索引。利用布尔值进行索引。以下是演示的实例。
    注意,当我们使用神奇索引来取数据的时候,只能返回一个一维数组。其中满足条件的元素存在在一维数组中。存在降维现象。
2.Numpy的逻辑运算
    1.np.any(a)
        a:传入一个全部由bool值组成的数组
        return:当数组中的布尔值中存在True时,返回True;当数组中的布尔值全为False时候,返回False。
    2.np.all(a)
        a:传入一个全部由bool值组成的数组
        return:当数组中的布尔值全为True时,返回True;当数组中的布尔值存在False时候,返回False。
    3.np.where(condition, x, y)
        condition:传入一个元素全为布尔值的数组。
        x:当满足该条件的位置的元素置为a
        y:当不满住该条件的位置的元素置为b
        return:返回一个处理好的数组。
    4.np.logical_and(x1, x2)
        x1:条件一
        x2:条件二
        return:返回一个满足“与”逻辑的布尔数组
    5.np.logical_or(x1, x2)
        x1:条件一
        x2:条件二
        return:返回一个满足“或”逻辑的布尔数组
    6.np.logical_not(x)
        x:条件
        return:返回一个满足“非”逻辑的布尔数组
注意:
    Numpy逻辑“与或非”函数(4, 5, 6函数)存在的原因,就是python中的保留了字and、or、not不能使用在ndarray中。因此,当对ndarray进行逻辑操作的时候,并不能采用python中的保留字,应该使用函数4、5、6。
    通过函数1、2我们可以对整个全局的元素的范围有一个大致的了解
    通过函数3,我们可以快速修改数组中的元素
    通过函数4、5、6再配合函数3或者神奇索引,我们也可以完成一些酷炫的操作

神奇索引

代码:

# 这里我们实现一个需求,取出data中满足大于1.5的元素
# 注意存在降维现象

import numpy as np

np.random.seed(22)
data = np.random.uniform(-1, 2, size=100)
print('data:\n', data)
print('需求实现:\n', data[data > 1.5])

输出:

data:
 [-0.37461839  0.44504319  0.26161411  1.577546   -0.48651534  0.01659188
 -0.1884015   1.07312405 -0.33878645  1.43585276 -0.96841938  0.68361109
  1.44117856  1.23530089 -0.43266593 -0.9815774   1.31613161  1.8734965
  1.10581365 -0.1072652   1.30397823  1.06465497  0.16155044  0.84561748
  0.28266572  0.75286893  1.10790656 -0.66431448  1.76980978  1.96665882
  1.03223232  1.38549433 -0.91277095 -0.46672279  1.62478324  1.23479623
  0.52427049 -0.61499829  0.45285272  0.54732046 -0.06620601 -0.86301537
  0.31304198 -0.71234617 -0.86436966  1.05448616  1.54757224 -0.62437845
 -0.61280798  0.41918001 -0.40732447  1.34486825  0.82224159  0.33050028
  1.94608733  1.12686624 -0.34380875 -0.49753511  0.61629642 -0.05973764
  1.73461099 -0.74123296 -0.05777791 -0.34258791  1.20999869  1.48562109
  1.23369339 -0.46738889  1.57535959 -0.98346276  0.07292951  1.85944475
  1.82532916 -0.93085296  1.01904799 -0.507657    0.70439711 -0.27363113
 -0.52643226  0.51068846  0.71538544  0.40985724  0.52450172 -0.02874517
  1.65949507 -0.24449347  1.58626344  0.90558857  1.09166954 -0.90863922
  0.97193391  1.99796726  0.51963643  1.79793725  0.32240861 -0.39991405
  1.4115607   1.42301618 -0.82614139  1.37091811]
需求实现:
 [1.577546   1.8734965  1.76980978 1.96665882 1.62478324 1.54757224
 1.94608733 1.73461099 1.57535959 1.85944475 1.82532916 1.65949507
 1.58626344 1.99796726 1.79793725]

Numpy的逻辑运算

代码:

import numpy as np

# 数据
np.random.seed(22)
data = np.random.uniform(-1, 2, size=100)
print('data:\n', data)

# np.any
print(np.any(data > 1.9))
print(np.any(data > 2))

# np.all
print(np.all(data > 1.9))
print(np.all(data < 2))

# np.where
print(np.where(data > 1.9, 100, 0))

# np.logical_and
print(np.logical_and(data < 1 ,data > 0))

# np.logical_or
print(np.logical_or(data <1, data > 0))

# np.logical_not
print(np.logical_not(data < 1))

输出:

data:
 [-0.37461839  0.44504319  0.26161411  1.577546   -0.48651534  0.01659188
 -0.1884015   1.07312405 -0.33878645  1.43585276 -0.96841938  0.68361109
  1.44117856  1.23530089 -0.43266593 -0.9815774   1.31613161  1.8734965
  1.10581365 -0.1072652   1.30397823  1.06465497  0.16155044  0.84561748
  0.28266572  0.75286893  1.10790656 -0.66431448  1.76980978  1.96665882
  1.03223232  1.38549433 -0.91277095 -0.46672279  1.62478324  1.23479623
  0.52427049 -0.61499829  0.45285272  0.54732046 -0.06620601 -0.86301537
  0.31304198 -0.71234617 -0.86436966  1.05448616  1.54757224 -0.62437845
 -0.61280798  0.41918001 -0.40732447  1.34486825  0.82224159  0.33050028
  1.94608733  1.12686624 -0.34380875 -0.49753511  0.61629642 -0.05973764
  1.73461099 -0.74123296 -0.05777791 -0.34258791  1.20999869  1.48562109
  1.23369339 -0.46738889  1.57535959 -0.98346276  0.07292951  1.85944475
  1.82532916 -0.93085296  1.01904799 -0.507657    0.70439711 -0.27363113
 -0.52643226  0.51068846  0.71538544  0.40985724  0.52450172 -0.02874517
  1.65949507 -0.24449347  1.58626344  0.90558857  1.09166954 -0.90863922
  0.97193391  1.99796726  0.51963643  1.79793725  0.32240861 -0.39991405
  1.4115607   1.42301618 -0.82614139  1.37091811]
True
False
False
True
[  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0   0   0 100   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
 100   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
   0 100   0   0   0   0   0   0   0   0]
[False  True  True False False  True False False False False False  True
 False False False False False False False False False False  True  True
  True  True False False False False False False False False False False
  True False  True  True False False  True False False False False False
 False  True False False  True  True False False False False  True False
 False False False False False False False False False False  True False
 False False False False  True False False  True  True  True  True False
 False False False  True False False  True False  True False  True False
 False False False False]
[ True  True  True  True  True  True  True  True  True  True  True  True
  True  True  True  True  True  True  True  True  True  True  True  True
  True  True  True  True  True  True  True  True  True  True  True  True
  True  True  True  True  True  True  True  True  True  True  True  True
  True  True  True  True  True  True  True  True  True  True  True  True
  True  True  True  True  True  True  True  True  True  True  True  True
  True  True  True  True  True  True  True  True  True  True  True  True
  True  True  True  True  True  True  True  True  True  True  True  True
  True  True  True  True]
[False False False  True False False False  True False  True False False
  True  True False False  True  True  True False  True  True False False
 False False  True False  True  True  True  True False False  True  True
 False False False False False False False False False  True  True False
 False False False  True False False  True  True False False False False
  True False False False  True  True  True False  True False False  True
  True False  True False False False False False False False False False
  True False  True False  True False False  True False  True False False
  True  True False  True]

学习地址:

 黑马程序员Python教程,4天快速入门Python数据挖掘,系统精讲+实战案例_哔哩哔哩_bilibili

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值