Ошибка Python - «слишком много индексов для массива» - PullRequest
0 голосов
/ 06 апреля 2019

У меня есть код, который работает для чтения одного файла и сохранения в матрицу. Но я хочу прочитать и сохранить несколько файлов в матрицу. Но когда я пытаюсь расширить свой код для работы с несколькими файлами, я получаю следующее сообщение об ошибке «слишком много индексов для массива», которое я не получал, когда читал только один файл

Я пытался использовать функцию вместо цикла for, а также применять индексы по-другому (как показано в некоторых других потоках здесь, в StackOverflow), но это не сработало.

Эта часть кода не работает должным образом:

r=r[1:lengthOfDataset,1:numberOfColumns]

Мой код полностью:

dataPath = ['ABB-2018-03-26-2019-03-26.csv',
    'ALFA-2018-03-26-2019-03-26.csv',
    'ALIV-SDB-2018-03-26-2019-03-26.csv',...]


lengthOfDataset=252
numberOfColumns=10
data=np.zeros([len(dataPath),lengthOfDataset-1,numberOfColumns-1])


for i in range(len(dataPath)):
    data[i]=readAndConvertFile(dataPath[i])


def readAndConvertFile(F):
    with open(F, 'r') as f:
        reader = csv.reader(f, delimiter=';')
        lists = list(reader)
        r = np.array(lists)
        r=r[1:lengthOfDataset,1:numberOfColumns]
        for j in range(lengthOfDataset-1):
                for k in range(numberOfColumns-1):
                    r[j,k]=num(r[j,k])
        return r


def num(s):
    try:
        s=s.replace(',','.')
        s=float(s)
        return s
    except ValueError:
        return 0

1 Ответ

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

Если вы сделаете из списка пустой массив, содержащий только один элемент, вы получите массив с формой (, 1) (только одно измерение), тогда как, если в списке будет больше элементов, вы получитеформа как (количество файлов, 1) (двумерный).Я бы предложил изменить форму массива numy r после его создания.

np.reshape(r,(-1,1))

Это гарантирует, что r всегда имеет два измерения, без указания количества строк.

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