Глагол rowwise()
делает так, чтобы каждая команда выполнялась отдельно в каждой строке. Это не то, что вы хотите, потому что хотите нормализовать все значения в группе. Не один ряд. Просто возьмите эту часть.
x <- RaRb %>%
group_by(symbol) %>%
select(symbol, adjusted.x) %>%
mutate(adj.x = normalise_series(adjusted.x))
Вы были близки. Вы можете сделать это, умножив транспонирование матриц и затем транспонировав окончательные субматрицы, используя свопаксы
A = np.array([[1,2,3],[4,5,6],[7,8,9]])
C = np.array([[[100, 1], [10, 0.1], [1, 0.01]]]) # C.shape is (1, 3, 2)
D = (A.T*C.T)
D = D.swapaxes(1,2)
Вы также можете объединить эти строки как
D = (A.T*C.T).swapaxes(1,2)
[116 ] Вывод
array([[[1.e+02, 2.e+01, 3.e+00],
[4.e+02, 5.e+01, 6.e+00],
[7.e+02, 8.e+01, 9.e+00]],
[[1.e+00, 2.e-01, 3.e-02],
[4.e+00, 5.e-01, 6.e-02],
[7.e+00, 8.e-01, 9.e-02]]])
Вы добавили транспонирование в C
, которого нет в коде MATLAB.
Если вы хотите сохранить точно такой же макет данных, вставьте конечный одноэлементный размер в A
. В MATLAB конечные синглтоны неявны, в numpy ведущие синглтоны неявны:
>>> D = A[...,None] * C.squeeze()
>>> D
array([[[1.e+02, 1.e+00],
[2.e+01, 2.e-01],
[3.e+00, 3.e-02]],
[[4.e+02, 4.e+00],
[5.e+01, 5.e-01],
[6.e+00, 6.e-02]],
[[7.e+02, 7.e+00],
[8.e+01, 8.e-01],
[9.e+00, 9.e-02]]])
Здесь A[..., None]
имеет форму (3, 3, 1)
, а C.squeeze()
просто отменяет что лишнее ведущее одноэлементное измерение и формирует его (3,2)
. Они транслируются в форму (3, 3, 2)
. MATLAB и numpy по-разному интерпретируют многомерные массивы, что объясняет, почему repr
выше соответствует трем массивам формы (3,2)
, в то время как MATLAB показывает два массива формы (3,3
). Но на самом деле это тот же массив:
>>> D[..., 0]
array([[100., 20., 3.],
[400., 50., 6.],
[700., 80., 9.]])
>>> D[..., 1]
array([[1. , 0.2 , 0.03],
[4. , 0.5 , 0.06],
[7. , 0.8 , 0.09]])
Обратите внимание, что если вы сохраните порядок MATLAB в своем коде numpy, вы можете захотеть использовать разметку fortran в своих массивах, иначе у вас будут «быстрые» оси в неоптимальных места в коде NumPy.