Python | Добавление массивов numpy с различными формами [duplicate]

Очистить и перестроить

. «Чистая» сборки может удалить «мертвую древесину», которая может быть оставлена ​​лежащей рядом с предыдущими сборками, неудачными сборками, неполными сборками и другими проблемами сборки.

В общем случае среда IDE или сборка будет включать в себя некоторую форму «чистой» функции, но это может быть неправильно настроено (например, в ручном файле) или может завершиться неудачей (например, промежуточные или результирующие двоичные файлы - только).

После завершения «очистки» убедитесь, что «чистый» преуспел, и весь сгенерированный промежуточный файл (например, автоматический файл makefile) был успешно удален.

Этот процесс можно рассматривать как конечный вариант, но часто является хорошим первым шагом ; особенно если недавно был добавлен код, связанный с ошибкой (локально или из исходного репозитория).

20
задан Saullo G. P. Castro 13 August 2013 в 10:56
поделиться

4 ответа

reshape работает для этого

a  = np.arange(3)        # a.shape  = (3,)
b  = a.reshape((3,1))    # b.shape  = (3,1)
b2 = a.reshape((-1,1))   # b2.shape = (3,1)
c  = b.reshape((3,))     # c.shape  = (3,)
c2 = b.reshape((-1,))    # c2.shape = (3,)

также отмечает, что reshape не копирует данные, если только это не требуется для новой формы (что она делает здесь не нужно):

a.__array_interface__['data']   # (22356720, False)
b.__array_interface__['data']   # (22356720, False)
c.__array_interface__['data']   # (22356720, False)
18
ответ дан tom10 26 August 2018 в 15:25
поделиться

Используйте numpy.squeeze :

>>> x = np.array([[[0], [1], [2]]])
>>> x.shape
(1, 3, 1)
>>> np.squeeze(x).shape
(3,)
>>> np.squeeze(x, axis=(2,)).shape
(1, 3)
6
ответ дан dbliss 26 August 2018 в 15:25
поделиться

Вырезать нужный размер, как в примере ниже. Чтобы перейти в обратном направлении, вы можете использовать None в качестве среза для любого измерения, которое должно рассматриваться как одноэлементное измерение, но которое необходимо для того, чтобы заставить фигуры работать.

In [786]: yy = np.asarray([[11],[7]])

In [787]: yy
Out[787]:
array([[11],
       [7]])

In [788]: yy.shape
Out[788]: (2, 1)

In [789]: yy[:,0]
Out[789]: array([11, 7])

In [790]: yy[:,0].shape
Out[790]: (2,)

In [791]: y1 = yy[:,0]

In [792]: y1.shape
Out[792]: (2,)

In [793]: y1[:,None]
Out[793]:
array([[11],
       [7]])

In [794]: y1[:,None].shape
Out[794]: (2, 1)

Альтернативно, вы может использовать reshape:

In [795]: yy.reshape((2,))
Out[795]: array([11,  7])
1
ответ дан ely 26 August 2018 в 15:25
поделиться

противоположный перевод может быть сделан:

np.atleast_2d(y).T
0
ответ дан Hanan Shteingart 26 August 2018 в 15:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: