gpt4 book ai didi

python - 如何有效地将二维数组中的每个元素乘以 Numpy 中的一维数组?

转载 作者:行者123 更新时间:2023-12-04 10:42:04 25 4
gpt4 key购买 nike

我想使用 numpy 有效地将 2D 数组中的每个元素与 1D 数组相乘,从而返回 3D 数组。

基本上,代码应该执行以下操作:

import numpy as np

#create dummy data
arr1=np.arange(0,9).reshape((3,3))
arr2=np.arange(0,9)

#create output container
out = []

#loop over every increment in arr1
for col in arr1:

row = []

for i in col:

#perform calculation
row.append(i*arr2)

out.append(row)


#convert output to array
out = np.array(out)

没有形状 (3, 3, 9) 并因此等于
array([[[ 0,  0,  0,  0,  0,  0,  0,  0,  0],
[ 0, 1, 2, 3, 4, 5, 6, 7, 8],
[ 0, 2, 4, 6, 8, 10, 12, 14, 16]],

[[ 0, 3, 6, 9, 12, 15, 18, 21, 24],
[ 0, 4, 8, 12, 16, 20, 24, 28, 32],
[ 0, 5, 10, 15, 20, 25, 30, 35, 40]],

[[ 0, 6, 12, 18, 24, 30, 36, 42, 48],
[ 0, 7, 14, 21, 28, 35, 42, 49, 56],
[ 0, 8, 16, 24, 32, 40, 48, 56, 64]]])

非常感谢您!

最佳答案

使用numpy.outer :

np.outer(arr2,arr1).reshape(3,3,9)

要得到:
array([[[ 0,  0,  0,  0,  0,  0,  0,  0,  0],
[ 0, 1, 2, 3, 4, 5, 6, 7, 8],
[ 0, 2, 4, 6, 8, 10, 12, 14, 16]],

[[ 0, 3, 6, 9, 12, 15, 18, 21, 24],
[ 0, 4, 8, 12, 16, 20, 24, 28, 32],
[ 0, 5, 10, 15, 20, 25, 30, 35, 40]],

[[ 0, 6, 12, 18, 24, 30, 36, 42, 48],
[ 0, 7, 14, 21, 28, 35, 42, 49, 56],
[ 0, 8, 16, 24, 32, 40, 48, 56, 64]]])

关于python - 如何有效地将二维数组中的每个元素乘以 Numpy 中的一维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59878166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com