У меня три шестимерных Numpy
массивов (работает на Python 3.4) формаКак транслировать Numpy 2D-массив в 6D-массив
Weights
MyValue
WeightedValue = Weight * MyValue
Я хотел бы определить взвешенное среднее MyValue
, взвешенный по Weights
'axis- j
(который может находиться в диапазоне от 0 до 4) по другим осям, за исключением того, что ось 5
является постоянной.
(Так, когда j=2
, мы усредняем по 0,1,3,
и 4
).
Затем я намерен принять это среднее и умножить на Weights
и вычитать продукт от WeightedValue
Я намерен сделать это
NewArray = WeightedValue - Weight * fn(Weighted Value, Weights)
NewMyValue = NewArray/Weights
fn()
будет среднее значение MyValue
определяется как :
the sum of Weighted Value using 4 axes (all except j and 5)
< divided by >---------------------------------------------------------------
the sum of Weights across 4 axes (all except j and 5)
Моя проблема заключается в следующем:
Среднее значение является 2D-массив, мне нужно fn()
для создания 6D-массива, т.е. трансляции 2D-результат по сравнению с другими 4-х размеров
Я мог бы в крайнем случае создать ряд петель для итерации по осям j
и оси 5
.FOR второй оси (к = 1) цикл будет выглядеть следующим образом
import numpy as np
result = np.zeros((dim0,dim1,dim2,dim3,dim4,dim5))
for var1 in range(dim1):
for var5 in range(dim5):
result[:,dim1,:,:,:,dim5] = AverageValue[dim1,dim5]
Но я надеюсь, есть более простой и общий способ
Рассмотрите возможность добавления примерного кода, который работает автономно. Если вы знаете, как это сделать с помощью циклов, используйте их, и мы можем помочь вам удалить их. Проверьте [«как задать хороший вопрос»] (http://stackoverflow.com/help/how-to-ask). – farenorth
Небольшой пример, который мы можем запустить, а также ваш желаемый результат из этого примера, может быть очень полезным. Таким образом, потенциальные ответчики точно знают, что вы пытаетесь сделать. –