这个python for循环实际上在做什么

这个python for循环实际上在做什么,python,for-loop,indexing,Python,For Loop,Indexing,我正在尝试将一些代码从Python移植到R,我在Python代码中遇到了for的用法,我以前从未见过,我无法通过谷歌搜索找到答案: 代码行是: logp=[theta[np.newaxis,…]用于theta中的theta] 我理解theta[np.newaxis,…]部分,但由于一些原因,我无法理解后面的for子句 我在这里做了一个可复制的小例子: import numpy as np theta = np.random.rand(5, 2, 2, 3) thetai = theta[0]

我正在尝试将一些代码从Python移植到R,我在Python代码中遇到了
for
的用法,我以前从未见过,我无法通过谷歌搜索找到答案:

代码行是:
logp=[theta[np.newaxis,…]用于theta中的theta]

我理解
theta[np.newaxis,…]
部分,但由于一些原因,我无法理解后面的
for
子句

我在这里做了一个可复制的小例子:

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

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

生成此输出:

logp
Out[406]: 
[array([[[0.305, 0.071, 0.483],
         [0.005, 0.627, 0.24 ]]]),
 array([[[0.648, 0.524, 0.254],
         [0.257, 0.367, 0.796]]])]
有几件事我不明白。 1.for子句在做什么?它是数组子集的一种方法吗?
2.当
θ
实际上是
θ
的子集时,如何在
θ
中计算
θ
在python中称为列表理解。基本思想是以更紧凑的方式编写语句。 而不是

arr = []
for x in range(10):
  arr.append(x)
我们可以写作

arr = [ x for x in range(10)]

查看更多关于此的信息

谢谢。但在我的例子中,我也没有“得到for循环的顺序-它是
对于smallthing中的bigthing
但不知怎么回事?@user2498193我对numpy不太了解,但θ的形状是(2,3),而tai的形状是(2,2,3),这显然意味着tai是“bigthing”,而θ是“smallthing”。始终可以使用print语句和theta.shape检查数组和维度。希望有帮助。
theta
具有
np.random.rand
语句中声明的形状(5,2,2,3)。列表理解代码维护这些维度。请注意,当我在for循环中表示代码时,θ在tai:theta[np.newaxis,…]中的θ会以某种方式将θ的形状更改为(2,3)。要么我把它编错了,要么列表理解表达式的计算方式不同somehow@user2498193对不起,我不能正确回答你的问题。你说你是在为“小东西”中的“大东西”做
,但你不是。θin
对于θi中的θ
具有形状(2,3)。但原始θ的形状是(5,2,2,3)。这意味着这些θ不一样。事实上,
中x的
表示“x”是循环中的临时变量。您原来的theta在模块中具有全球范围。不,谢谢您的努力!是的,有人在这里向我解释过:我根本没有意识到for循环中的θ是一个不同的θ。我自己不会为这个迭代循环计数器选择θ!请重新回答这个问题。所提到的理解问题列表只回答了部分问题。问题的第二部分是关于为什么
在smallthing中为bigthing
工作。这似乎与列表理解表达式有关,因为扩展for循环表达式似乎会改变行为