我想得到c的答案,其中c被定义为:
c = x + y
我有x和y的以下条目:
x y
-2 5
-3 10
2 15
4 20
6 25
获取数据,我从csv文件加载它:
data=np.loadtxt('data.csv',delimiter=',',skiprows=1)
x_value= data[:,0]
y_value= data[:,1]
代码正常工作,直到我决定删除x的否定条目。我有:
x_value1= [x for x in x_value if float(x)>0]
现在返回错误。我知道为了使它工作,我还必须删除5和10,因为方程的条目不一样。我不知道该怎么做。
答案 0 :(得分:1)
你可能会想要放弃列表理解,因为这是一个更长的操作,它将涉及多个列表。您可以只使用索引,并将非负数据复制到新列表中:
new_x = []
new_y = []
for i in range(len(x)):
if x[i] >= 0:
new_x.append(x[i])
new_y.append(y[i])
使用zip
的替代策略:
new_x = []
new_y = []
for x_elem, y_elem in zip(x,y):
if x_elem >= 0:
new_x.append(x_elem)
new_y.append(y_elem)
我不确定是否有更简洁的方法,但我更喜欢更长,更可读的代码。
答案 1 :(得分:1)
使用data
上的逻辑,检查每个2元组的第一个条目的否定值:
>>> data
array([[-2, 5],
[-3, 10],
[ 2, 15],
[ 4, 20],
[ 6, 25]])
>>> data2 = n.array([x for x in data if float(x[0])>0]) # x here is each row
>>> data2
array([[ 2, 15],
[ 4, 20],
[ 6, 25]])
答案 2 :(得分:1)
可能你会尝试类似的东西:
data[data[:,0]>0]
在类似的答案中暗示:filtering lines in a numpy array according to values in a range