数组中特定值的条件

时间:2018-07-10 00:50:10

标签: python arrays python-3.x if-statement

我目前的状况是:

if np.any(x <= 0.5):
    print ("right")
else:   
    print ("wrong")

但是问题是我不想使用np.any()np.all()

x的值在一个不断变化的csv文件中,我希望该条件仅适用于第三列文件的第一行和最后一行。

实现此目标的最好,最有效的方法是什么?

2 个答案:

答案 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')