Python Numpy Array возвращает несколько значений для каждого индекса, но не позволяет индексировать эти значения - PullRequest
0 голосов
/ 02 октября 2018

Когда я печатаю массив, он выглядит следующим образом

print(my_array)
[ 0 0 0 1 0 1...  
1 0 2 0 1 ]  
[ 0 0 0 1 0 1...  
1 0 2 0 1 ]  
none

Когда я индексирую массив одним индексом, таким как

print(my_array[0])

, он возвращает

0  
0  
none

но если я попытаюсь, например

print(my_array[0,0])

, я получу

"IndexError: too many indices for array"

Наконец, форма вернет

(750,)  
(750,)  
None  

, а тип вернет

class 'numpy.ndarray'   
class 'numpy.ndarray'  
None  

Этот массив был передан мне как домашнее задание, поэтому я не знаю, как это было сделано (Coursera Course).Как я могу разделить три массива?Я вижу, что каждые 750 точек данных являются повторениями, и мне просто нужен один набор из 750 для использования в назначении.

1 Ответ

0 голосов
/ 02 октября 2018

Ваш массив имеет тип dtype object, потому что это не числовой массив с одинаковым количеством столбцов в каждой строке.Это выглядит примерно так:

L = [np.array([0, 0, 1]), np.array([0, 0, 0]), None]

A = np.array(L)

array([array([0, 0, 1]),
       array([0, 0, 0]),
       None], dtype=object)

for i in A:
    print(type(i))    

<class 'numpy.ndarray'>
<class 'numpy.ndarray'>
<class 'NoneType'>

Это не то, как вы должны использовать NumPy.Вы можете попробовать удалить значения None, чтобы создать обычный числовой массив NumPy:

B = np.array([i for i in L if i is not None])

array([[0, 0, 1],
       [0, 0, 0]])

Если сомневаетесь, проверьте dtype массива, чтобы убедиться, что он имеет правильный тип:

A.dtype  # dtype('O')
B.dtype  # dtype('int32')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...