Python和科学计算认证群组  - 讨论区

标题:请教index函数的问题

2011年12月30日 星期五 17:43

number = np.arange(0,100)

index = scipy.array(number)

index5 = index[code == 0 or 1] # 想从code中找到 0 或 1的位置, 但是0和1不会同时出现,只要遇到0或1 都可以,所以用了 ‘ or ’ 语句,看似没有错误,为什么提示:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

谢谢!

2011年12月30日 星期五 20:18

index[(code == 0) | (code == 1)] 

或者

index[np.in1d(code, [0, 1])]

2011年12月30日 星期五 20:21

你的那种写法不正确,至少应该写为:

code == 0 or code == 1

但是因为or是关键字,它不能被重新定义为对数组每个元素的or操作,因此这种写法对于数组无法正确运行。“|”是位或的操作符,它对布尔数组来说和逻辑或计算相同,但是由于"|"的优先级比==高,因此需要用括号把等号括起来。

这一点在书中有详细的说明。

2011年12月31日 星期六 00:22

感谢版主!

请问 index[np.in1d(code, [0, 1])] 中 np.in1d  是什么模板, 我的python中好像没有这个。

AttributeError: 'module' object has no attribute 'in1d'

2011年12月31日 星期六 07:42

In [1]: import numpy as np

In [2]: np.in1d

Out[2]: <function in1d at 0x013989F0>

In [3]: np.__version__

Out[3]: '1.6.1'

in1d是numpy的函数,你看看你的版本。

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号