python数组运算符_切片numpy数组时使用python的逻辑运算符

我想在二维numpy数组上执行切片:

type1_c = type1_c[

(type1_c[:,10]==2) or

(type1_c[:,10]==3) or

(type1_c[:,10]==4) or

(type1_c[:,10]==5) or

(type1_c[:,10]==6)

]

语法看起来正确;但是我收到以下错误消息:

‘具有多个元素的数组的真值是不明确的.使用a.any()或a.all()’

我真的不明白出了什么问题.任何的想法?

解决方法:

或者在两个标量之间是明确的,但是什么是正确的向量推广?如果x == array([0,0])和y == array([0,1]),则x或y应为(1)False,因为并非所有成对项或-ed一起为True,(2)是的,因为至少有一个成对或结果为真,(3)数组([0,1]),因为这是or,(4)数组([0,0])的成对结果,因为[0,0 ]或[0,1]将返回[0,0]因为非空列表是真实的,所以数组应该是什么?

你可以使用|在这里,并将其视为一个按位问题:

>>> import numpy as np

>>> vec = np.arange(10)

>>> vec[(vec == 2) | (vec == 7)]

array([2, 7])

明确使用numpys矢量化逻辑或:

>>> np.logical_or(vec==3, vec==5)

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

>>> vec[np.logical_or(vec==3, vec==5)]

array([3, 5])

或使用in1d,这在这里效率更高:

>>> np.in1d(vec, [2, 7])

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

>>> vec[np.in1d(vec, [2, 7])]

array([2, 7])

标签:python,arrays,slice

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值