繁体   English   中英

for循环中意外输出

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM