【问题标题】:iterate over columns to plot a graph of output data遍历列以绘制输出数据图
【发布时间】:2019-01-15 03:49:13
【问题描述】:

我编写了一个小 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() 

【问题讨论】:

    标签: python python-2.7 numpy matplotlib


    【解决方案1】:

    您通常不会两次致电genfromtxt。而是从退货中选择您需要的。

    A = np.genfromtxt(..)
    x = A[:,0]
    y = A[:,1:]
    

    【讨论】:

    • 感谢欧内斯特先生的回答! ;)
    【解决方案2】:

    就像之前建议的答案一样,最好的做法可能是先读取整个 csv,然后将第一列切片为 x,其余为 y。这样,只要 csv 中的第一列是 x,脚本就可以工作。

    对于更细微的解决方案,您可以查看 pandas,因为它支持命名列。这是一个使用熊猫的非常简单的解决方案。你可以用它做更多的事情,它有更好的方法来处理表格数据。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-24
      • 2021-05-20
      • 2022-07-26
      • 1970-01-01
      • 1970-01-01
      • 2022-06-28
      • 1970-01-01
      相关资源
      最近更新 更多