Каковы эффективные способы зацикливания векторов вдоль указанной оси в numpy ndarray?
Я обрабатываю данные, зацикливаясь на векторах вдоль оси (может быть любой оси) numpy ndarray (может иметь любые размеры).
Я не работал с массивом напрямую, потому что данные не идеальны. Требуется контроль качества каждого вектора. Если это не хорошо, вектор будет заполнен нулями (или нан) и не будет иметь реальной обработки.
я нашелэтот вопрос похоже, но моя проблема гораздо сложнее, потому что
ndim
произвольно.Для трехмерного массива я могу взять векторыaxis 1
как это
x = np.arange(24).reshape(2,3,4)
for i in range(x.shape[0]):
for k in range(x.shape[2]):
process(x[i,:,k])
но еслиndim
и взятыйaxis
не фиксируются, как взять векторы?
Один из возможных способов, который я рассматриваю,
y = x.swapaxes(ax,-1)
# loop over vectors along last axis
for i in np.ndindex(y.shape[:-1]):
process(y[i+(slice(None),)])
# then swap back
z = y.swapaxes(ax,-1)
Но я сомневаюсь в эффективности этого метода.