Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用带有numpy数组的if语句?_Python_Arrays_Numpy - Fatal编程技术网

Python 如何使用带有numpy数组的if语句?

Python 如何使用带有numpy数组的if语句?,python,arrays,numpy,Python,Arrays,Numpy,我有以下输入文件“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,ati

我有以下输入文件“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'
将numpy导入为np
s=打开('r1')
r=开放('r2','w+'))
r1=np.loadtxt(s)
atim=r1[:,[0]]
alat=r1[:,[1]]
如果atim r,atim,alat,'小于15'
如果atim==15且alat==15:
打印>>r、atim、alat,“等于15”
但是,当我运行程序时,我得到以下错误
如果atim您想进行如下比较

all(i < 15 for i in r1[0])
all(i == 15 for i in r1[0])
all(r1[0]中的i小于15)
全部(对于r1[0]中的i,i==15)
所以你可以做:

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'
对于len(r1)中的行:
如果全部(r1[行]中的i小于15):
打印>>r,r1[行][0],r1[行][1],“小于15”
如果全部(对于r1[行]中的i,i==15):
打印>>r,r1[行][0],r1[行][1],“等于15”

使用numpy,它非常简单:

[(a < 15).all() for a in r1] 
错误消息:

当您将数组与整数进行比较时,会得到一个布尔数组

>>> 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()

这是一个很好的错误消息,你有没有尝试跟进你得到的建议?
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()
>>> if (np.array([13, 15]) == 15).any():
...     print 'Hi'
... 
Hi