Неудачно в добавлении массивов Numpy - PullRequest
0 голосов
/ 05 апреля 2019

Я пытаюсь перебрать CSV-файл и создать пустой массив для каждой строки в файле, где первый столбец представляет координаты x, а второй столбец представляет координаты y. Затем я пытаюсь добавить каждый массив в мастер-массив и вернуть его.

import numpy as np 

thedoc = open("data.csv")
headers = thedoc.readline()


def generatingArray(thedoc):
    masterArray = np.array([])

    for numbers in thedoc: 
        editDocument = numbers.strip().split(",")
        x = editDocument[0]
        y = editDocument[1]
        createdArray = np.array((x, y))
        masterArray = np.append([createdArray])


    return masterArray


print(generatingArray(thedoc))

Я надеюсь увидеть массив со всей информацией о CSV. Вместо этого я получаю сообщение об ошибке: "append () отсутствует 1 обязательный позиционный аргумент: 'values' Любая помощь, где моя ошибка и как ее исправить, очень ценится!

1 Ответ

0 голосов
/ 05 апреля 2019

Массивы Numpy магически не растут так же, как списки Python.Вам нужно выделить место для массива в вызове функции «masterArray = np.array ([])», прежде чем добавлять в него все.

Лучший ответ - импортировать напрямую в массив с использованием чего-либокак genfromtxt (https://docs.scipy.org/doc/numpy-1.10.1/user/basics.io.genfromtxt.html), но ...

Если вы знаете количество строк, в которых читаете, или можете получить его, используя что-то вроде этого.

file_length = len(open("data.csv").readlines())

Затем вы можете предварительно выделить массив numpy, чтобы сделать что-то вроде этого:

masterArray = np.empty((file_length, 2))

for i, numbers in enumerate(thedoc): 
    editDocument = numbers.strip().split(",")
    x = editDocument[0]
    y = editDocument[1]
    masterArray[i] = [x, y]

Я бы порекомендовал первый метод, но если вы ленивы, вы всегда можете просто создать список python, а затем создать массив numy.

masterArray = []

for numbers in thedoc: 
    editDocument = numbers.strip().split(",")
    x = editDocument[0]
    y = editDocument[1]
    createdArray = [x, y]
    masterArray.append(createdArray)

return np.array(masterArray)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...