Дан массив ,
>>> n = 2
>>> a = numpy.array([[[1,1,1],[1,2,3],[1,3,4]]]*n)
>>> a
array([[[1, 1, 1],
[1, 2, 3],
[1, 3, 4]],
[[1, 1, 1],
[1, 2, 3],
[1, 3, 4]]])
Я знаю, что можно заменить значения в нем лаконично вот так,
>>> a[a==2] = 0
>>> a
array([[[1, 1, 1],
[1, 0, 3],
[1, 3, 4]],
[[1, 1, 1],
[1, 0, 3],
[1, 3, 4]]])
Можно ли сделать то же самое для всей строки (последняя ось) в массиве? Я знаю, что a[a= =[1,2,3]] = 11
будет работать и заменит все элементы совпадающих подмассивов на 11, но я хотел бы заменить другой подмассив. Моя интуиция подсказывает мне написать следующее, но результаты ошибки,
>>> a[a==[1,2,3]] = [11,22,33]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: array is not broadcastable to correct shape
В итоге я хотел бы получить следующее:
array([[[1, 1, 1],
[11, 22, 33],
[1, 3, 4]],
[[1, 1, 1],
[11, 22, 33],
[1, 3, 4]]])
... и n, конечно, в общем случае намного больше, чем 2, а другие оси также больше, чем 3, поэтому Я не хочу перебирать их, если мне это не нужно
Обновление: [1,2,3]
(или что-то еще, что я ищу) не всегда индекс 1. Пример:
a = numpy.array([[[1,1,1],[1,2,3],[1,3,4]], [[1,2,3],[1,1,1],[1,3,4]]])