【问题标题】:Creating a numpy array from a .csv file从 .csv 文件创建一个 numpy 数组
【发布时间】:2015-02-06 12:25:02
【问题描述】:

给定一个如下所示的 .csv 文件:

49.18;-3.34
45.73;2.63
47.88;-11.49
45.74;3.06
48.73;-9.56
49.20;-3.42

我使用以下代码:

data = np.genfromtxt("file.csv",  delimiter=';')

结果数组如下所示:

[[ 49.18  -3.34]
 [ 45.73   2.63]
 [ 47.88 -11.49]
 [ 45.74   3.06]
 [ 48.73  -9.56]
 [ 49.2   -3.42]
 [ 45.71   2.53]
 [ 47.87 -11.67]]

但我想要的是这样的:

 [[ 49.18 , -3.34]
 [ 45.73 ,  2.63]
 [ 47.88 , -11.49]
 [ 45.74 ,  3.06]
 [ 48.73 , -9.56]
 [ 49.2  , -3.42]
 [ 45.71 ,  2.53]
 [ 47.87 , -11.67]]

我做错了什么? 非常感谢,希望你能帮到我

【问题讨论】:

  • 一切都很好。 numpy的打印形式不显示逗号

标签: python arrays csv numpy


【解决方案1】:

输出是什么

data.shape

我相信它已经如你所愿地工作了。

【讨论】:

  • 这是输出:(125L, 2L)
  • 那么,125 行乘 2 列?问题是您希望它以某种方式打印还是希望它在一个 numpy 数组中使用? type(data) 是 numpy.ndarray 吗?
  • 没错,就是125行2列。问题是我无法使用索引单独访问列。这是一个 numpy.ndarray
  • 请提供一个索引示例及其产生的错误。 data[:,0] 应该访问第一列
【解决方案2】:

如果你真的需要一个数组而不是一个 numpy 数组,那么你可以将你的 np.array 转换为带有 tolist() 的列表:

my_list = data.tolist()

请记住,对于列表,您只能使用以下符号索引每个维度:

print my_list[0][0]

使用 numpy-array 可以同时使用这两种表示法:

print data[0,0]
print data[0][0]

【讨论】:

  • tolist() 产生一个list,而不是一个数组。或者更确切地说是一个列表列表。 Python 有一个名为array 的单独类。但是随着numpy 的广泛可用性,它很少使用。我知道我很挑剔,但编程时术语确实很重要。
猜你喜欢
  • 1970-01-01
  • 2017-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多