numpy中负值统一置0技巧与分析

       在numpy使用中有一个可以把负值全都统一置0的技巧,比如,data数组中的相应元素需要处理,可以使用以下技巧:

       data[data < 0] = 0

       说到了这里面的技术细节,首先得注意到索引值的生成。data < 0,其实是进行了一个布尔量构成的矩阵,因此,赋值操作的左边其实是一个布尔索引。而直接的赋值,如此看来是针对布尔索引而进行的,后面针对这个小知识的具体使用我还得去进行更进一步的探索。

       操作的演示过程如下;

In [1]: importnumpy as np

 

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

 

In [3]: data

Out[3]:

array([[-1.79112448,  0.31230134, 2.35188945, -0.43138688],

       [-0.16980782,  1.59262128, 0.83549023,  0.96182137],

       [-0.39802573,  0.11213687, 2.63071268, -2.34228672],

       [ 1.50063812, -0.98689011, -0.3220348 ,-0.77471036],

       [ 1.66673087,  0.09119577, -1.15349213,  0.9059744 ],

       [ 0.0507576 , -1.0114599 ,  0.44970121, 0.67156826],

       [-0.491824  , 1.72937139, -0.03956675, 0.17517367]])

 

In [4]: data <0

Out[4]:

array([[ True,False, False,  True],

       [ True, False, False, False],

       [ True, False, False,  True],

       [False, True,  True,  True],

       [False, False,  True, False],

       [False, True, False, False],

       [ True, False,  True, False]], dtype=bool)

 

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

 

In [6]: data

Out[6]:

array([[ 0.        , 0.31230134,  2.35188945,  0.       ],

       [ 0.        , 1.59262128,  0.83549023,  0.96182137],

       [ 0.        , 0.11213687,  2.63071268,  0.       ],

       [ 1.50063812,  0.       ,  0.        , 0.        ],

       [ 1.66673087,  0.09119577, 0.        ,  0.9059744 ],

       [ 0.0507576 ,  0.       ,  0.44970121,  0.67156826],

       [ 0.        , 1.72937139,  0.        , 0.17517367]])

       暂时可能不知道这个功能实现的具体机制,只能够记忆一下后期使用。不过按照Python的基本语法,一个数组的名字肯定是不能够赋值为一个常量的,这样数组对象本身也就成为了一个常量。因为,原来的数组名本身不过是一个标签的作用。

       代码测试如下:

In [7]: data = 0

 

In [8]: data

Out[8]: 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值