如何将两个列表中的所有值相乘并获得相应的矩阵

时间:2018-05-19 14:35:53

标签: python python-3.x numpy matrix

所以我对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。

我不完全确定如何做到这一点,任何帮助都将不胜感激!

1 个答案:

答案 0 :(得分:5)

您可以而且应该使用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  ]]