[英]Unexpected output in for loop
我有一个矩阵M
type(M) = numpy.ndarray
M.shape = (500,500)
和100个值的数组
arr = numpy.arange(100)
我想将形状为(500,500)
的矩阵M乘以arr
的每个值。 也就是说,每个矩阵条目都将乘以arr
的值,并且结果输出将是100个矩阵的数组。
对于arr
每个值,将该值乘以矩阵,然后创建结果数组,即[M1 M2 ... M99 M100]
。
我将其编码为
import numpy as np
for i in arr:
x = np.asarray( i * M)
我希望结果x
像[M1 M2 ... M99 M100]
的数组,是100个矩阵的数组,形状为500 x 500。
但是,以上代码仅输出一个矩阵。
我该如何更改?
循环的每一步都会覆盖x
。 如果要创建3维数组(500,500,100)
,可以采用以下几种方法:
广播(可能是最有效的):
>>> res = M[:, :, None] * arr[None, None, :]
>>> res.shape
(500L, 500L, 100L)
创建一个输出数组并填充它:
>>> res = np.empty((500, 500, 100))
>>> for i in arr:
... res[:, :, i] = M * i
或创建矩阵列表(尽管直接数组转换将使其成为(100, 500, 500)
。
>>> res = [M * i for i in arr]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.