python中除了某个数以外的_如何将numpy数组中除一个特定值外的所有值替换为零?...

与所有其他解决方案相比,一种更优雅的方法是只使用^{}>>> arr

array([[12, 35, 12, 26],

[35, 35, 12, 26]])

# get the result as binary matrix

>>> np.isin(arr, 35).astype(np.uint8)

array([[0, 1, 0, 0],

[1, 1, 0, 0]])

^{}将返回一个带有True值的布尔掩码,其中给定元素(这里是35)存在于原始数组中,False在其他地方。在

另一个变体是使用数据类型为^{}的^{}来转换布尔结果,以获得更好的速度:

^{pr2}$

标杆管理

通过显式地将布尔结果转换为^{},我们可以获得3倍以上的性能。(感谢@Divakar指出这一点!)参见下面的计时:# setup (large) input array

In [3]: x = np.arange(25000000)

In [4]: x[0] = 35

In [5]: x[1000000] = 35

In [6]: x[2000000] = 35

In [7]: x[-1] = 35

In [8]: x = x.reshape((5000, 5000))

# timings

In [20]: %timeit np.where(x==35, 1, 0)

427 ms ± 25.2 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

In [21]: %timeit

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值