Cam*_*arr 3 python arrays indexing performance numpy
我试图通过在二维数组上应用操作来改善numpy性能,问题是数组中每个元素的值取决于该元素的i,j位置.
显然,这样做的简单方法是使用嵌套的for循环,但我想知道是否有更好的方法可以引用np.indices或沿着这些行的东西?这是我的"愚蠢"代码:
for J in range(1025):
for I in range(1025):
PSI[I][J] = A*math.sin((float(I+1)-.5)*DI)*math.sin((float(J+1)-.5)*DJ)
P[I][J] = PCF*(math.cos(2.*float(I)*DI)+math.cos(2.*float(J)*DJ))+50000.
Run Code Online (Sandbox Code Playgroud)
由于您在两个数组之间进行乘法运算,因此在使用sin/cos数组后,可以使用外部函数arange.
像这样的东西(使用numpy的trig函数,因为它们是矢量化的)
PSI_i = numpy.sin((arange(1,1026)-0.5)*DI)
PSI_j = numpy.sin((arange(1,1026)-0.5)*DJ)
PSI = A*outer(PSI_i, PSI_j)
P_i = numpy.cos(2.*arange(1,1026)*DI)
P_j = numpy.cos(2.*arange(1,1026)*DJ)
P = PCF*outer(P_i, P_j) + 50000
Run Code Online (Sandbox Code Playgroud)
如果您的环境是使用from numpy import *或设置的from pylab import *,那么numpy.在trig函数之前不需要这些前缀.我让他们把它们与math那些区分开来,这对于这种方法是行不通的.
| 归档时间: |
|
| 查看次数: |
2954 次 |
| 最近记录: |