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 © 2024
京ICP备05028076号