异常的列表理解行为

我正在尝试将一些代码从Python移植到R,并且遇到了我无法完全理解的列表理解。这是一个类似于代码的玩具示例

import numpy as np
theta = np.random.rand(5, 2, 2, 3)
thetai = theta[0]

logp = [theta[np.newaxis, ...] for theta in thetai]

如果运行并打印结果,则会得到:

print(logp)
[array([[[0.779, 0.461, 0.766],
        [0.245, 0.189, 0.045]]]), array([[[0.229, 0.288, 0.173],
        [0.011, 0.541, 0.528]]])]

Ok output is a list of two arrays. What I cannot understand is the for theta in thetai clause. Why? Because theta is a bigger array than thetai. Theta has shape (5,2,2,3) but thetai has shape (2,2,3). So what is the list comprehension actually doing when the code says for biggerthing in smallerthing ???

评论