Извлечение значений ключа из массива словарей - PullRequest
0 голосов
/ 16 апреля 2020

Я хочу читать из файла .npy для выполнения некоторых задач обработки сигналов, но во время этой задачи я получил эту ошибку:

IndexError: только целые числа, срезы (:), многоточие ( ...), numpy .newaxis (None) и целые или логические массивы являются действительными индексами

это мой код:

import numpy as np
import matplotlib.pyplot as plt


file  = '/signal/data.npy'
d = np.load(file,allow_pickle=True,encoding = 'latin1')

d['soma'][0]

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

Это ошибка: enter image description here

Это часть моих данных (d равно res):

enter image description here

Ответы [ 2 ]

1 голос
/ 23 апреля 2020

ваши данные состоят из массивов словарей. для каждого массива у вас есть несколько ключей со своими значениями. решение, как сказал @ hpaulj:

   res[array_index]["your_key"]
1 голос
/ 16 апреля 2020

У вас есть массив numpy d, и вы пытаетесь получить доступ, например, к индексу "soma", что невозможно. Numpy Правило индексирования:
допустимы только целые числа, срезы (:), многоточие (...), numpy .newaxis (нет) и целые или логические массивы .

Если ваш массив numpy содержит словари, вам нужно извлечь словари. d['soma'] не извлекает элементы из массива numpy.
Это зацикливается на массиве d и извлекает первый элемент значений ключа 'soma' для всех словарей в d, имеющих ключ 'soma':

lfp = [i['soma'][0] for i in d if 'soma' in i]

И если это массив данных вместо numpy массива, попробуйте:

d = pd.read_pickle(file)
...