массив нулевой размерности до 1d - PullRequest
0 голосов
/ 28 марта 2019

У меня есть массив в numpy: [0 1 2 3]

Когда я пытаюсь получить первый элемент с [0], он выдает: IndexError: too many indices for array

Если я использую for x in a: print(x) Python throws TypeError: iteration over a 0-d array

Попытка составить список с помощью list(a) throws TypeError: 'numpy.uint8' object is not iterable

Как мне преобразовать этот список чисел в стандартный список?

Ответы [ 2 ]

2 голосов
/ 28 марта 2019

Было бы полезно узнать, как вы создали a, чтобы мы могли попытаться воспроизвести ошибки.

import numpy as np

a = np.array([0, 1, 2, 3])
print(a[0]) # 0

for x in a:
    print(x) # 0 1 2 3

# you can call list() to convert to a python list
print(list(a))

# you can also call the built-in numpy array method
print(a.tolist())

a = np.array(a)
print(a, type(a)) # [0 1 2 3] <class 'numpy.ndarray'>
print(a[0]) # 0
print(a[1]) # 1

Все эти операции выполнены успешно.Python 3.7.1, Numpy 1.15.4

0 голосов
/ 28 марта 2019

Попробуйте проверить тип массива, используя a=array('[0 1 2 3]', dtype='<U9') Мне удалось повторить первые две ошибки. Если это так, попробуйте следующее

b=list(str(a))
newArray=[]
for val in b:
    try:
        newArray.append(int(val))
    except ValueError:
        pass

Python не будет автоматически изменять значение строки на int или float, как некоторые другие языки. Надеюсь, это поможет

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