Добавить дополнительное измерение к arr2
:
arr1[:, :, range(25,26,1)] = arr2.reshape(arr2.shape + (1,))
Упрощенная запись для range
, как здесь используется:
arr1[:, :, 25:26)] = arr2.reshape(arr2.shape + (1,))
(и slice(25,26,1)
, или slice(25,26)
, также может работать; просто чтобы добавить к опциям и возможной путанице.)
Или вставить дополнительную ось в конце arr2
:
arr1[..., 25:26] = arr2[..., np.newaxis]
(где ...
означает«как можно больше измерений»). Вы также можете использовать None
вместо np.newaxis
;последнее, вероятно, более явное, но любой, кто знает NumPy, распознает None
как вставку дополнительного измерения (оси).
Конечно, вы также можете установить arr2
как трехмерное с самого начала:
arr2 = np.zeros([6,10,1])
Обратите внимание, что вещание работает при использовании слева:
>>> arr1 = np.zeros([50,6,10]) # Swapped ("rolled") dimensions
>>> arr2 = np.zeros([6,10])
>>> arr1[25:26, :, :] = arr2 # No need to add an extra axis
Просто оно не работает при использовании изверно, как в вашем коде.