我有以下输入文件' r1'
14 14
15 15
我想创建以下输出文件' r2'。
14 14 less than 15
15 15 equal to 15
我正在尝试使用以下代码。
import numpy as np
s=open('r1')
r=open('r2','w+')
r1=np.loadtxt(s)
atim=r1[:,[0]]
alat=r1[:,[1]]
if atim<15 and alat<15:
print >> r,atim,alat,'less than 15'
if atim==15 and alat==15:
print >> r,atim,alat,'equal to 15'
但是,当我运行程序时,我收到以下错误 如果atim&lt; 15和alat&lt; 15: ValueError:具有多个元素的数组的真值是不明确的。使用a.any()或a.all()
答案 0 :(得分:1)
你想进行比较,比如
all(i < 15 for i in r1[0])
all(i == 15 for i in r1[0])
所以你可以这样做:
for row in len(r1):
if all(i < 15 for i in r1[row]):
print >> r,r1[row][0], r1[row][1], 'less than 15'
if all(i == 15 for i in r1[row]):
print >> r,r1[row][0], r1[row][1], 'equal to 15'
答案 1 :(得分:0)
numpy,非常简单:
[(a < 15).all() for a in r1]
或
[(a == 15).all() for a in r1]
答案 2 :(得分:0)
import numpy as np
r1 = np.array([[11, 15],
[15, 15],
[14, 14]])
equal_to_15 = (r1[:,0] == 15) & (r1[:,1] == 15)
less_than_15 = (r1[:,0] < 15) & (r1[:,1] < 15)
结果:
>>> equal_to_15
array([False, True, False], dtype=bool)
>>> less_than_15
array([False, False, True], dtype=bool)
错误讯息:
将数组与整数进行比较时,会得到一个布尔数组。
>>> np.array([13, 15]) == 15
array([False, True], dtype=bool)
>>> if _:
... print 'Hi'
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
numpy并没有评估整个数组的真实性,但如果我们这样做了:
>>> if (np.array([13, 15]) == 15).any():
... print 'Hi'
...
Hi