【问题标题】:How to multiply all values in two lists and attain a corresponding matrix如何将两个列表中的所有值相乘并获得相应的矩阵
【发布时间】:2018-05-19 14:35:52
【问题描述】:

所以我对 python 还很陌生,想知道如何将一个列表中的每个元素与另一个列表中的每个元素相乘,并用这些新元素构造一个矩阵。 例如:

如果我有两个列表:

alpha_p_arra = [0.01,0.02,0.03....,0.1], 
alpha_b_arra = [0.01,0.02,0.03....,0.2]

与图片中的格式类似,我可以创建一个形状为两个列表(为 20x10)的矩阵,在这些索引处具有相应的相乘值吗?即:在 (0,0) 处为 0.01*0.01 或在 (1,0) 处为 0.02*0.01。

我不完全确定如何执行此操作,我们将不胜感激!

【问题讨论】:

  • 双重列表理解有效:[[i*j for i in alist] for j in blist].
  • 以下答案有帮助吗?如果是这样,请考虑accepting(左侧的绿色勾号),或要求澄清。

标签: python python-3.x numpy matrix


【解决方案1】:

您可以并且应该使用numpy 进行此计算:

import numpy as np

alpha_p_arra = np.arange(1, 11) / 100
alpha_b_arra = np.arange(1, 21) / 100

res = alpha_p_arra * alpha_b_arra[:, None]

请注意,我们更改了第二个数组的形状,以便numpy 了解通过broadcasting 需要什么。

print(res)的输出:

[[0.0001 0.0002 0.0003 0.0004 0.0005 0.0006 0.0007 0.0008 0.0009 0.001 ]
 [0.0002 0.0004 0.0006 0.0008 0.001  0.0012 0.0014 0.0016 0.0018 0.002 ]
 [0.0003 0.0006 0.0009 0.0012 0.0015 0.0018 0.0021 0.0024 0.0027 0.003 ]
 [0.0004 0.0008 0.0012 0.0016 0.002  0.0024 0.0028 0.0032 0.0036 0.004 ]
 [0.0005 0.001  0.0015 0.002  0.0025 0.003  0.0035 0.004  0.0045 0.005 ]
 [0.0006 0.0012 0.0018 0.0024 0.003  0.0036 0.0042 0.0048 0.0054 0.006 ]
 [0.0007 0.0014 0.0021 0.0028 0.0035 0.0042 0.0049 0.0056 0.0063 0.007 ]
 [0.0008 0.0016 0.0024 0.0032 0.004  0.0048 0.0056 0.0064 0.0072 0.008 ]
 [0.0009 0.0018 0.0027 0.0036 0.0045 0.0054 0.0063 0.0072 0.0081 0.009 ]
 [0.001  0.002  0.003  0.004  0.005  0.006  0.007  0.008  0.009  0.01  ]
 [0.0011 0.0022 0.0033 0.0044 0.0055 0.0066 0.0077 0.0088 0.0099 0.011 ]
 [0.0012 0.0024 0.0036 0.0048 0.006  0.0072 0.0084 0.0096 0.0108 0.012 ]
 [0.0013 0.0026 0.0039 0.0052 0.0065 0.0078 0.0091 0.0104 0.0117 0.013 ]
 [0.0014 0.0028 0.0042 0.0056 0.007  0.0084 0.0098 0.0112 0.0126 0.014 ]
 [0.0015 0.003  0.0045 0.006  0.0075 0.009  0.0105 0.012  0.0135 0.015 ]
 [0.0016 0.0032 0.0048 0.0064 0.008  0.0096 0.0112 0.0128 0.0144 0.016 ]
 [0.0017 0.0034 0.0051 0.0068 0.0085 0.0102 0.0119 0.0136 0.0153 0.017 ]
 [0.0018 0.0036 0.0054 0.0072 0.009  0.0108 0.0126 0.0144 0.0162 0.018 ]
 [0.0019 0.0038 0.0057 0.0076 0.0095 0.0114 0.0133 0.0152 0.0171 0.019 ]
 [0.002  0.004  0.006  0.008  0.01   0.012  0.014  0.016  0.018  0.02  ]]

【讨论】:

  • 我希望您不介意我将示例输出添加到您的出色答案中,以帮助我们这些从可视化中受益的人。
  • 哦,谢谢!如果可能的话,进一步扩展,我将如何对 alpha_p_arra 和 alpha_b_arra 中的每一对应用一个函数,而不是仅仅相乘。例如,在 (0,0) 处,将 alpha_p_arra 元素和该索引处的 alpha_b_arra 元素合并到一个公式中,等等 (0,1) 和 (0,2) 处的对等。我是认为我必须应用某种类型的零矩阵
  • @DanielBoz,这是可能的,但您应该询问separate question,以便其他用户可以找到您的问答:)。你可以给我发消息 (@jpp) 以确保我看到它。
  • 另外,如果这回答了你的问题,你应该考虑接受(左边的绿色勾号)。
猜你喜欢
  • 1970-01-01
  • 2015-04-19
  • 1970-01-01
  • 2020-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-21
  • 1970-01-01
相关资源
最近更新 更多