将变量编入“索引”;至于;循环Python
我有以下Python代码将变量编入“索引”;至于;循环Python,python,loops,for-loop,Python,Loops,For Loop,我有以下Python代码 for i,j,k in itertools.product(range(theta),range(gamma),range(N)): L = (gamma[j]*math.pi)*((theta[i])**2) + x[n] 因为我有三个for循环,所以变量L本质上是一个三维矩阵。是否可以为变量L编制索引?类似于,L[i,j,k]。如果你想得到的是L的值,它被视为i,j,k的函数(为每个三元组i,j,k得到一个特定的L值),最简单的方法可能是把它变成一个散列
for i,j,k in itertools.product(range(theta),range(gamma),range(N)):
L = (gamma[j]*math.pi)*((theta[i])**2) + x[n]
因为我有三个for循环,所以变量L本质上是一个三维矩阵。是否可以为变量L编制索引?类似于,L[i,j,k]。如果你想得到的是L的值,它被视为i,j,k的函数(为每个三元组i,j,k得到一个特定的L值),最简单的方法可能是把它变成一个散列,并使用一个三维元组作为索引 您的代码会变成这样:
L = {}
for i,j,k in itertools.product(range(theta),range(gamma),range(N)):
L[(i,j,k)] = (gamma[j]*math.pi)*((theta[i])**2) + x[k]
注意,这样做并不是定义“矩阵”的所有单元格,只有实际包含某些内容的单元格,并且当元组索引不匹配时,您将不得不处理这种情况
当然,您也可以使用一个numpy矩阵,正如Mike67所建议的那样,当您实际上没有循环所有可能的θ、伽马和范围值,而只循环特定的有趣情况时,元组技巧将非常有用
PS:我在公式中将n改为k,因为我认为这是一个输入错误如果你想得到的是L的值,它是I,j,k的函数(为每个三元组I,j,k得到一个特定的L值),最简单的方法可能是把它变成一个散列,并使用一个三维元组作为索引 您的代码会变成这样:
L = {}
for i,j,k in itertools.product(range(theta),range(gamma),range(N)):
L[(i,j,k)] = (gamma[j]*math.pi)*((theta[i])**2) + x[k]
注意,这样做并不是定义“矩阵”的所有单元格,只有实际包含某些内容的单元格,并且当元组索引不匹配时,您将不得不处理这种情况
当然,您也可以使用一个numpy矩阵,正如Mike67所建议的那样,当您实际上没有循环所有可能的θ、伽马和范围值,而只循环特定的有趣情况时,元组技巧将非常有用
PS:我将公式中的n改为k,因为我认为这是一个输入错误如果将numpy与多维数组一起使用,您可以使用itertools.product在数组的所有维度上迭代
import numpy as np
L = np.zeros((theta, gamma, N))
for i,j,k in itertools.product(range(theta),range(gamma),range(N)):
L[i,j,k] = (gamma[j]*math.pi)*((theta[i])**2) + x[n]
如果将numpy与多维数组一起使用,则可以使用itertools.product在数组的所有维度上迭代
import numpy as np
L = np.zeros((theta, gamma, N))
for i,j,k in itertools.product(range(theta),range(gamma),range(N)):
L[i,j,k] = (gamma[j]*math.pi)*((theta[i])**2) + x[n]
你能给我们一个3D矩阵的例子,以及你想要的输出吗?我想你应该使用
numpy
数组。我只是在寻找一种方法来索引变量L。目前,输出显示为向量,但正如你所见,L基本上是三维的。我喜欢你的第一个答案,如果你添加一些代码,你就可以引用L[i] [j][k],但在存储ref之前,您必须验证您是否拥有基本数组、数组数组数组,然后是支持3维的数组数组数组数组。使用索引元组作为键的哈希是一个非常优雅的解决方案。我认为您需要显示更多代码,以了解您想要做什么。是吗你试图构造一个三维数组,或者只是在每次迭代中提取一个L
值,用在其他表达式中?你能给我们一个三维矩阵的例子,以及你想要的输出吗?我想你应该使用numpy
数组。我只是在寻找一种方法来索引变量L。目前,输出显示为向量,但正如你所看到的,L基本上是三维的,我喜欢你的第一个答案,如果你添加一些代码,你就可以引用L[I][j][k],但在存储ref之前,您必须验证您是否拥有基本数组、数组数组数组,然后是支持3维的数组数组数组数组。使用索引元组作为键的哈希是一个非常优雅的解决方案。我认为您需要显示更多代码,以了解您想要做什么。是吗你想构建一个三维数组的值,或者只是在每次迭代中提取一个L
值,用在其他表达式中?嗨,克里斯,碰巧,Mike67的回答对我的工作更有意义。所以让我选择他的答案,而不是你的答案。尽管如此,从你的回答中学习新的东西还是很有用的。@Nanda:当然,选择最好的答案swer,使用numpy方法通常比调用标准python更有效。我应该用mike67的simlar建议来完成我的答案。很高兴他这么做。嗨,克里斯,事实上,mike67的回答对我的工作更有意义。所以让我选择他的答案,而不是你的答案。尽管如此,从你的r中学习新的东西还是很有用的回答。@Nanda:当然,选择最佳答案,使用numpy方法通常比调用标准python更有效。我应该像mike67一样用一个简单的建议来完成我的答案。很高兴他这么做。谢谢,mike67。你的建议对我的应用程序更有效。谢谢,mike67。你的建议对我的应用程序更有效。