Предположим, у меня есть DataFrame df следующим образом:
Код: Выделить всё
import pandas as pd
import numpy as np
data = {'id': range(100), 'value': np.random.rand(100)}
df = pd.DataFrame(data)
Код: Выделить всё
arr = np.random.rand(10, 5, 100, 20)
Решение может включать итерацию или использование np.apply_along_axis, что часто бывает медленным для больших массивов:
Код: Выделить всё
result_slow = np.zeros_like(arr)
for i in range(df.shape[0]):
result_slow[:, :, i, :] = arr[:, :, i, :] * df['value'].iloc[i]
Как я могу эффективно решить это умножение, используя широковещательную рассылку NumPy без явных циклов или apply_along_axis, чтобы умножить столбец df['value'] вдоль определенной оси (в данном случае 3-й оси) массива NumPy?
Я ищу решение, которое не только хорошо работает с большими наборами данных, но и эффективно использует память.
Подробнее здесь: https://stackoverflow.com/questions/798 ... dimensions
Мобильная версия