(蟒蛇)无法正确获取矩阵标量乘法输出



我试图用标量乘以矩阵,但无法正确输出。

m, n = 3, 3
scalar = 5
A = [ [1, 0, 0],
[0, 1, 0],
[0, 0, 1] ]
B = []

for i in range(n):
B.append([])
for j in range(n):
B[i].append(A[i][j] * scalar)
print (B)

我收到的输出是:

[[5, 0, 0]]
[[5, 0, 0], [0, 5, 0]]
[[5, 0, 0], [0, 5, 0], [0, 0, 5]]

我想要的输出是:

[ [5, 0, 0],
[0, 5, 0],
[0, 0, 5] ]

我怎么去那里?

编辑:你的建议奏效了,谢谢大家!

你非常接近!这是我的解决方案

A = [[1,0,0], [0,1,0], [0,0,1]]
B = []
m,n = 3,3
scalar = 5
for i in range(n):
B.append([])
for j in range(n):
result = A[i][j] * scalar
B[i].append(result)
#B = [[5, 0, 0], [0, 5, 0], [0, 0, 5]]
for i in B:
print(i)

然后,你的输出是:

[5, 0, 0]
[0, 5, 0]
[0, 0, 5]

你能使用numpy吗?它是这样工作的:

import numpy as np
scalar = 5
a = [[1, 0, 0],
[0, 1, 0],
[0, 0, 1]]
print(np.array(a) * scalar)

在不依赖另一个模块/库的情况下,最好是在循环之外处理打印。这里有一种方法:

for row in B:
print(row)

我的解决方案:

m, n = 3, 3
scalar = 5
A = [ [1, 0, 0],
[0, 1, 0],
[0, 0, 1] ]
B = []

for row_index,row in enumerate(A):
for column_index,column in enumerate(row):
A[row_index][column_index] *= scalar
for i in A:
print(i)

输出

[5, 0, 0]
[0, 5, 0]
[0, 0, 5]

注意:我根本没有使用B

最新更新