Я видел много вопросов с ответами о том, как эффективно заменить элементы массива NumPy конкретными вещами, такими как "1" или что-то, если они удовлетворяют определенным условиям.
Я хочу заменить все элементы в двумерном массиве NumPy на собственный массив, т.е. элемент i
превращается в элемент [i,i,i]
или, возможно, [f(i),g(i),h(i)]
для некоторых функций f(x),g(x),h(x)
которые я указываю. Как это можно сделать питонически (и желательно, способом, приемлемым для Нумбы)?
Используйте np.repeat
:
a = np.repeat(np.arange(30).reshape(10, 3)[..., np.newaxis], 3, axis=2)
print(a.shape)
print(0, 0, :)
Выход:
(10, 3, 3)
[0 0 0]
np.newaxis
, а затем повторите исходный массив трижды вдоль новой оси.
b=np.empty(list(np.shape(a))+[3])
а затем что-то с ним сделав, но я не знаю достаточно NumPy идти оттуда.