Nehmen wir an, ich habe ein DataFrame-DF wie dieses:
Code: Select all
import pandas as pd
import numpy as np
data = {'id': range(100), 'value': np.random.rand(100)}
df = pd.DataFrame(data)
Code: Select all
arr = np.random.rand(10, 5, 100, 20)
Eine Lösung könnte die Iteration oder Verwendung von np.apply_along_axis beinhalten, was bei großen Arrays oft langsam ist:
Code: Select all
result_slow = np.zeros_like(arr)
for i in range(df.shape[0]):
result_slow[:, :, i, :] = arr[:, :, i, :] * df['value'].iloc[i]
Wie kann ich diese Multiplikation effizient lösen, indem ich NumPys Broadcasting ohne explizite Schleifen oder apply_along_axis nutze, um die Spalte df['value'] entlang einer bestimmten Achse (der 3. Achse in) zu multiplizieren? (in diesem Fall) des NumPy-Arrays?
Ich suche nach einer Lösung, die nicht nur für große Datensätze gut funktioniert, sondern auch speichereffizient ist.
Mobile version