我目前的状况是:
if np.any(x <= 0.5):
print ("right")
else:
print ("wrong")
但是问题是我不想使用np.any()
或np.all()
。
x
的值在一个不断变化的csv文件中,我希望该条件仅适用于第三列文件的第一行和最后一行。
实现此目标的最好,最有效的方法是什么?
答案 0 :(得分:0)
假设您的numpy数组import numpy as np
from scipy.interpolate import griddata
x = np.array([0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4])
y = np.array([0.2, 0.4, 0.6, 0.8, 1, 0.2, 0.4, 0.6, 0.8, 1, 0.2, 0.4, 0.6, 0.8, 1, 0.2, 0.4, 0.6, 0.8, 1, 0.2, 0.4, 0.6, 0.8, 1])
z = np.random.rand(25)
xi = np.linspace(min(x),max(x),100)
yi = np.linspace(min(y),max(y),100)
zi = griddata((x,y),z,(xi[None:,],yi[:,None]),method='linear',fill_value=0.0)
plt.contourf(xi,yi,zi)
plt.colorbar()
plt.show()
在其行中包含csv文件的行,在其列中包含值,则您可以采用这种方式解决问题(这是一种旧的方式)。
x
答案 1 :(得分:0)
从您撰写的内容来看,您实际上仅考虑了两个值:第一行的第三个元素和最后一行的第三个元素。您可以阅读CSV的第一行和最后一行,并仅检查那些元素。
import csv
with open('C:/path/to/file.csv') as fp:
reader = csv.reader(fp)
first = next(reader)
for last in reader:
pass
x1 = float(first[2])
x2 = float(last[2])
if x1 < 0.5 or x2 < 0.5:
print('right')
else:
print('wrong')