python - 在python中将2D(5x3)数组乘以1D(5x1)数组
问题描述
我想问一个关于将二维数组乘以一维数组的问题。
我有以下 2 个 numpy 数组:
>> array1_test
array([14.0067, 12.0107, 12.0107, 15.9994, 12.0107])
>> array2_test
array([[49.725, 20.724, 59.915],
[51.168, 20.935, 60.26 ],
[51.32 , 21.167, 61.757],
[50.327, 21.247, 62.472],
[51.732, 22.136, 59.483]])
我想将每一行array2_test
乘以array1_test
.
我使用while循环尝试了这个:
i = 0
while i < len(array2_test):
print(array1_test[i] * array2_test[i])
i += 1
这产生了我的预期结果:
[696.4831575 290.2748508 839.2114305]
[614.5634976 251.4440045 723.764782 ]
[616.389124 254.2304869 741.7447999]
[805.2018038 339.9392518 999.5145168]
[621.3375324 265.8688552 714.4324681]
但我想将这些存储在以下形式的数组中:
array([[696.4831575 290.2748508 839.2114305],
[614.5634976 251.4440045 723.764782 ],
[616.389124 254.2304869 741.7447999],
[805.2018038 339.9392518 999.5145168],
[621.3375324 265.8688552 714.4324681]])
我尝试执行以下操作:
i = 0
mylist = []
while i < len(array2_test):
mylist += (array1_test[i] * array2_test[i])
i += 1
但这不会产生任何结果。
怎样才能达到这样的结果?
我的直觉是将乘法结果转换为一个列表并附加到,mylist
但由于我需要返回一个数组,我想知道是否可以使用更短的解决方案。
解决方案
诀窍是通过切片将一维形状数组(5,)
转换为二维形状数组(这会创建一个新轴)。这允许您简单地将数组相乘并让 NumPy 处理其余部分:(5, 1)
None
>>> array2_test * array1_test[:, None]
array([[696.4831575, 290.2748508, 839.2114305],
[614.5634976, 251.4440045, 723.764782 ],
[616.389124 , 254.2304869, 741.7447999],
[805.2018038, 339.9392518, 999.5145168],
[621.3375324, 265.8688552, 714.4324681]])
推荐阅读
- r - 我的 R 随机化代码中的逻辑错误
- python - pandas read_csv 自动更改小数位
- python - 从源自按多个属性分组的 sql 查询的数据框中绘制分组条形图
- ios - 我如何获得 EC_v1 版本的 Apple Pay PaymentToken
- reactjs - 如何将计算出的数量传递给反应状态
- python - Python 在 if 中嵌套了一个生成器,否则嵌套在一个 return 中是可能的吗?
- c# - Moq:构建代理对象时的性能问题
- prometheus - Grafana / prometheus:理解速率函数
- java - 在 java 中使用表单数据的 HTTP POST 请求返回 400
- python - 条件清单