【问题标题】:Reading CSV File into Numpy Array将 CSV 文件读入 Numpy 数组
【发布时间】:2019-08-24 07:05:14
【问题描述】:

我正在尝试打开一个包含 4 列、大约 100 行的 CSV 文件。我想要一个 2D numpy 数组,它将第一列设置为 x 坐标,将第二列设置为 y 坐标。

import numpy as np

dataDocument = open("data.csv")
headers = dataDoument.readline()

def generateArray(dataDocument):
    for numbers in dataDocument:
        splitDocument = numbers.strip().split(",")
        myArray = np.array(splitDocument[0], splitDocument[1])
        
        return myArray 
       
print(generateArray(dataDocument))

我不断收到各种错误消息,最常见的是“不理解数据类型”。关于我的逻辑错误/一般代码错误存在于何处的任何建议?

【问题讨论】:

  • 您需要具体说明此处的错误。您可以直接使用 numpy 或在离开时使用 CSV 模块来读取文件。不过,据我所知,当前的方法可能不应该错误(不过,for 循环中的return 是一个明确的问题)
  • 这是我收到的最常见错误:数据类型“”不理解
  • 你方法中的这一行:myArray = np.array((splitDocument[0], splitDocument[1]))
  • 好像解决了这个问题,非常感谢!如何编辑我的代码以使其返回多个数组(代码中的每一行一个)?
  • 如果你能提供一个我可以查看的“屏蔽”数据......

标签: python arrays numpy csv


【解决方案1】:

试试:

from numpy import genfromtxt    
data = genfromtxt('data.csv', delimiter=',')

res = data[:,0:2]

【讨论】:

  • 问题表明它是逗号分隔的,而不是制表符分隔的
【解决方案2】:

你也可以试试:

 import numpy as np
 d = np.loadtxt('a.csv', delimiter=',')
 x = d[:,0]
 y = d[:,1]

【讨论】:

    【解决方案3】:
    replace: myArray = np.array(splitDocument[0], splitDocument[1])
    with: myArray = np.array((splitDocument[0], splitDocument[1])) 
    in your method and should solve the issue.
    

    问题是由于您将 splitDocument[1] 作为 dtype 参数传递给您的 np.array

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 2011-05-16
      • 2018-03-25
      • 2017-12-23
      • 2019-09-22
      • 1970-01-01
      相关资源
      最近更新 更多