我对Python比较新(习惯于在IDL和MATLAB中工作),并且正在尝试习惯Python如何“索引”数组。我正在尝试启动一个7x13矩阵并将其填充到for循环中:
def func(theta2, phi2):
sph = [[[] for l in range(6)] for m in range(12)]
for l in range(0,6):
for m in range(-6,6):
sph[l,m]=np.real(np.conjugate(sph_harm(m,l,phi2,theta2))*np.sin(theta2))
return sph
f = func(np.pi/4,np.pi/4)
这将导致以下错误:“TypeError:list索引必须是整数,而不是元组 ". 如果删除变量“sph”上的[l,m]索引,我只得到1x1数组输出,而不是所需的7x13数组输出。在
我还尝试将for循环全部删除,并将其组合成一行:
^{pr2}$这导致了12个1x6阵列的列表,这也不是我想要的。在
这篇文章类似于这篇文章:How to initialize a two-dimensional array in Python?,但我似乎不知道如何正确地实现这里的回复中所建议的内容。在
我该如何着手解决这个问题?在
在NumPy中,你不应该写循环。在
将您的
m
和l,
定义为数组,这里称为x
和y,
为数组:编写您的函数
^{pr2}$sph_harm()
,以便它能与整个数组一起工作。例如:现在,创建数组要简单得多,同样要处理整个数组:
改变
进入
^{pr2}$以及
范围(n)提供从0到n-1的列表
相关问题 更多 >
编程相关推荐