python中标量乘以向量的列表.线性代数Python



我正在尝试解决熊猫的问题。我已经为它写了一个循环,但它没有给我想要的结果。

我有一个标量a =[1,2],我有一个向量b =[1,2,3,4]。我想在a和b上执行元素智能乘法-所以a[0]* b, a[1]*b..

df = []
a = [1,2]
b = [1,2,3,4]
for i in a:
for j in b:
test = i * j
df.append(test)

现在在df中我有df = (1,2,3,4,2,3,6,8)这在技术上是正确的但我想处理一个标量列表来迭代,所以我的结果是

[1,2,3,4][2,4,6,8] - that can be saved in the dataframe df

另一个答案是使用einsum:

np.einsum('i,j->ij',a,b)

useouter:

np.outer(a, b)

array([[1, 2, 3, 4],
[2, 4, 6, 8]])

可以使用广播将多个列表转换为数组:

out = np.array(a)[:, None] * np.array(b)
print (out)
[[1 2 3 4]
[2 4 6 8]]

您的循环需要另一个追加。更好的是,使用嵌套的列表推导式

res = [[i*j for j in b] for i in a]

最新更新