我有一个包含24列x514行数据的.csv文件。每一列代表不同的参数,我希望研究不同参数之间的趋势。
我使用genfromtxt将数据导入为numpy数组,以便我可以绘制两个特定列的值(例如第9列与第11列)。以下是我目前拥有的:
import matplotlib.pyplot as plt
import numpy as np
data = np.genfromtxt('output_burnin.csv', delimiter=',')
impactparameter=data[:,11]
planetradius=data[:,9]
plt.plot(planetradius,impactparameter,'bo')
plt.title('Impact Parameter vs. Planet Radius')
plt.xlabel('R$_P$/R$_Jup$')
plt.ylabel('b/R$_star$')
plt.show()
使用这段代码时,我在第12行遇到了一个错误:
impactparameter=data[:,11]
IndexError: too many indices
这里可能存在什么问题呢?
另外,我一直在试图弄清楚如何给.csv文件中的每一列添加标题。这样,我就可以在绘图时直接调用该列的名称,而不是计算列号。有办法实现吗?
我是Python的完全新手,任何帮助将不胜感激,谢谢!
csv
模块。https://docs.python.org/2/library/csv.htmlimpactparameter
是一个大小为1的数组,很可能它不知道如何处理[:,11]
。因此,文件读取出了问题,也就是说你得到了与你所假设的不同的数据集。 - Aleksander Lidtkedata
不是一个二维数组。检查一下data.shape
看看它的形状是怎样的。根据你的 CSV 文件格式,你可能需要使用data.reshape
将它转换成正确的形状以便像你想要的那样对它进行切片。 - hunsedata.shape
来检查数据的大小是 [514,]。这是因为列之间使用空格而不是逗号分隔。我使用了split()
函数来分离每一列,现在它已经正常工作了。谢谢大家! - Kristine