所以我有两个数组。实际上,我的数组大小大于这个,它是700个数据。但作为一个小规模的例子如下所示
A = np.array([1.1, 1.2, 2.1, 2.2])
B = np.array([1, 3, 4, 6, 7, 8, 9, 10])
我想做一些数学建模的事情,如下所示
C = [[(1.1*1)+(1.1*3)+(1.1*4)+(1.1*6)+(1.1*7)+(1.1*8)+(1.1*9)+(1.1*10)],
[(1.2*1)+(1.2*3)+(1.2*4)+(1.2*6)+(1.2*7)+(1.2*8)+(1.2*9)+(1.2*10)],
[(2.1*1)+(2.1*3)+(2.1*4)+(2.1*6)+(2.1*7)+(2.1*8)+(2.1*9)+(2.1*10)],
[(2.2*1)+(2.2*3)+(2.2*4)+(2.2*6)+(2.2*7)+(2.2*8)+(2.2*9)+(2.2*10)]]
其中,此结果显示在一个4行1列的数组中。
如何用python编写这个逻辑?
请帮忙,谢谢
发布于 2022-09-03 03:55:43
我的解决方案受到this answer的启发。
试试这个:
np.sum(A[:, None] * B[None, :], axis=1)
A[:, None] * B[None, :]
生成笛卡尔积中的项的乘积。然后沿着正确的轴求和,使您正在求和的项保持来自A
的值固定,并沿B
中的值移动。
另外,您提供的C
术语缺少了乘以8的术语。我无法编辑这个问题,所以我将在这里提供正确的术语:
C = [[(1.1*1)+(1.1*3)+(1.1*4)+(1.1*6)+(1.1*7)+(1.1*8)+(1.1*9)+(1.1*10)],
[(1.2*1)+(1.2*3)+(1.2*4)+(1.2*6)+(1.2*7)+(1.2*8)+(1.2*9)+(1.2*10)],
[(2.1*1)+(2.1*3)+(2.1*4)+(2.1*6)+(2.1*7)+(2.1*8)+(2.1*9)+(2.1*10)],
[(2.2*1)+(2.2*3)+(2.2*4)+(2.2*6)+(2.2*7)+(2.2*8)+(2.2*9)+(2.2*10)]]
https://stackoverflow.com/questions/73589464
复制相似问题