我写了一个小的python脚本来绘制我的数据图。我想修改y变量,这样我每次输入更改时都不必更改usecols = range(1,11)参数。是否可以在np.gefromtxt函数中定义一个for循环?
import numpy as np
import matplotlib.pyplot as plt
x = np.genfromtxt('classdist.csv', usecols=(0))
y = np.genfromtxt('classdist.csv', usecols=range(1,11))
y1 = y * 100
print ' x=', x, '\n\n y=', y1
plt.plot(x, y1, linewidth =2)
plt.show()
答案 0 :(得分:0)
您通常不会两次致电genfromtxt
。而是从退货中选择您需要的东西。
A = np.genfromtxt(..)
x = A[:,0]
y = A[:,1:]
答案 1 :(得分:0)
就像先前的答案一样,最好的做法是先读取整个csv,然后将第一列切片为x,将其余列切片为y。这样,只要csv中的第一列是x,脚本就可以工作。
有关更细微的解决方案,您可以研究熊猫,因为它支持命名列。这是一个使用熊猫的非常简单的解决方案。您可以使用它做更多的事情,并且它还有更好的方法来处理表格数据。
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("/path/filename.csv") #Read in the entire csv as a Dataframe object
x = df.iloc[:,0] #select the first column to be x. Here, you can also mention the column name like df["your_col_name"]
y = df.iloc[:,1:] #Select the rest to be y
y1 = y * 100
print ' x=', x, '\n\n y=', y1
plt.plot(x, y1, linewidth =2)
plt.show()