Soy nuevo en numpy y actualmente estoy trabajando en un proyecto de modelado para el que tengo que realizar algunos cálculos basados en dos fuentes de datos diferentes. Sin embargo, hasta ahora no he logrado descubrir cómo podría multiplicar todos los valores individuales entre sí:
Tengo dos marcos de datos
Un marco de datos 2D:
df1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])Un marco de datos 1D:
df2 = np.array([1, 2, 3, 4, 5])Me gustaría multiplicar todos los valores individuales dentro del primer marco de datos (df1) por separado con todos los valores que se almacenan dentro del segundo marco de datos para crear un cubo de datos/nuevo marco de datos 3D que tenga la forma 5x3x3:
df3 = np.array([[[1, 2, 3], [4, 5, 6], [7, 8, 9]], [[2, 4, 6], [8, 10, 12], [14, 16, 18]], ..... ])Probé diferentes métodos, pero cada vez fallaba en obtener algo que se pareciera a df3.
x = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) y = np.array([1, 2, 3, 4, 5]) z = y for i in range(len(z)): z.iloc[i] = x for i in range(0, 5): for j in range(0, 3): for k in range(0, 3): z.iloc[i, j, k] = y.iloc[i] * x.iloc[j, k] print(z)¿Alguien podría ayudarme con algún código de ejemplo? ¡Gracias!
Prueba esto:
df1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) df2 = np.array([1, 2, 3, 4, 5]) df3 = df1 * df2[:, None, None]Producción:
>>> df3 array([[[ 1, 2, 3], [ 4, 5, 6], [ 7, 8, 9]], [[ 2, 4, 6], [ 8, 10, 12], [14, 16, 18]], [[ 3, 6, 9], [12, 15, 18], [21, 24, 27]], [[ 4, 8, 12], [16, 20, 24], [28, 32, 36]], [[ 5, 10, 15], [20, 25, 30], [35, 40, 45]]])