Предположим, у меня есть случайно сгенерированный 3d-массив srouceArray
:
ex: np.random.rand(3, 3, 3)
array([[[0.61961383, 0.26927599, 0.03847151],
[0.03497162, 0.77748313, 0.15807293],
[0.15108821, 0.36729448, 0.19007034]],
[[0.67734758, 0.88312758, 0.97610746],
[0.5643174 , 0.20660141, 0.58836553],
[0.59084109, 0.77019768, 0.35961768]],
[[0.19352397, 0.47284641, 0.97912889],
[0.48519117, 0.37189048, 0.37113941],
[0.94934848, 0.92755083, 0.52662299]]])
Я бы хотел произвольно заменить все элементы 3-го измерения на нули.
Ожидаемый массив:
array([[[0, 0, 0],
[0.03497162, 0.77748313, 0.15807293],
[0.15108821, 0.36729448, 0.19007034]],
[[0.67734758, 0.88312758, 0.97610746],
[0 , 0, 0],
[0.59084109, 0.77019768, 0.35961768]],
[[0, 0, 0],
[0, 0, 0],
[0.94934848, 0.92755083, 0.52662299]]])
Я думал о создании "маски"? используя random
np.random.choice([True, False], sourceArray.shape, p=[...])
и каким-то образом преобразовать его в 3D-массив, где False=[0, 0, 0]
и True=[1, 1, 1]
, и умножить на источник ...
Но я не знаю, как этого добиться. Держу пари, что есть более простой способ, о котором я не знаю.