【发布时间】:2020-04-25 00:14:22
【问题描述】:
我有一个棘手的问题
我有一个二维值数组
vals=np.array([[1.0, 2.0, 3.0],[4.0, 5.0, 6.0],[7.0, 8.0, 9.0]], np.float32)
还有一个二维比例因子数组
factors=np.array([[1.0, 4.0], [2.0, 5.0], [3.0, 6.0]])
我想将 vals 中的每一行与因子中的每一行相乘,最终得到一个“scaled_vals”数组,如下所示 注意:此输出已从我的原始帖子中更正 - 我对这个错误表示歉意
[[ 1. 2. 3.]
[ 8. 10. 12.]
[21. 24. 27.]]
[[ 4. 8. 12.]
[20. 25. 30.]
[42. 48. 54.]]
我只用两列数据显示因子,但实际上它是“n”。
我们将不胜感激。
道格
===
从评论中复制:
for step in range(2):
scaled_vals = np.multiply(vals, factors[0:,step:step+1])
【问题讨论】:
-
你能解释一下你是如何得到输出的吗?我无法通过任何乘法组合来理解它。这只是输出的第一个元素吗?
-
使用循环为 range(2) 中的步长生成输出:scaled_vals = np.multiply(vals, factor[0:,step:step+1])
-
现在我明白了。谢谢你的澄清。我有一个简单的单行解决方案,我在其中发布和索引,让您非常容易阅读。
-
所有 - 我完全搞砸了我的问题 - 我很抱歉浪费了大家的时间。我实际上试图实现的输出是 [[ 1. 2. 3.] [ 8. 10. 12.] [21. 24. 27.]] [[ 4. 8. 12.] [20. 25. 30.] [42. 48. 54.]] 这就是 hpaulj 所指出的循环实际产生的结果
-
您可以轻松地将我的帖子修改为您的设置。我稍后将根据此评论要求对其进行编辑。我想会是‘ij,ik->kij’
标签: numpy