Найти форму вложенного массива - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть такой массив:

import numpy as np
a = np.zeros((30,2))

, который дает мне массив с 30 строками и 2 столбцами и a.shape returns >> (30,2)

Однако, если я проверю форму a[0].shape >> (2,) но я ожидаю увидеть (1,2) есть ли способ создать этот массив (30,2) и все же получить форму отдельных элементов как (1,2)?

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

В качестве альтернативы ответу unutbu вы также можете использовать

a[0, np.newaxis].shape
>>> (1, 2)

. Объяснение можно найти почти в том же месте, что и другая ссылка.

0 голосов
/ 20 февраля 2019

Если вы используете целое число массив индексирование , первая ось не исчезнет:

In [8]: a[[0]].shape
Out[8]: (1, 2)

Первая ось будет иметь ту же длину, что и используемый списокиндексировать первую ось.Поскольку len([0]) равно 1, длина первой оси a[[0]] равна 1.

В отличие от этого a[0] является основным срезом, который в соответствии с правилами удаляетсвязанная ось.

Два типа индексации имеют определенную согласованность: если мы думаем о скаляре 0 как о массиве длины-0, а список [0] как о массиве длины-1-подобно, тогда a[index] возвращает массив, чья первая ось имеет ту же длину, что и index.Это свойство остается верным, даже если index сам является N -мерным массивом.

...