用于循环使用np.arctan2

use*_*754 1 python for-loop trigonometry numpy

我想在一个循环中使用np.arctan2,因为我有大量的切片要考虑(所以我有3D数组),但我有一个错误:"无效的参数数量"但我在二维数组上工作,因为我使用环...

import numpy as np

Lx=500.
Ly=400.

x0 = Lx/2. 
y0 = Ly/2.

#stockage des valeurs de x0 servant au calcul de x0 optimal
stockx0 = []
for i in range(0,300,1):
    stock = Lx/2. + i
    stockx0.append(stock)

stockx0 = np.array(stockx0)
stockx0 = stockx0[np.newaxis,:]

YA, XA = np.mgrid[0:Ly, 0:Lx]

XA = XA[:, :, np.newaxis]*np.ones((XA.shape[0],XA.shape[1],stockx0.shape[1]))

YA = YA[:, :, np.newaxis]*np.ones((XA.shape[0],XA.shape[1],stockx0.shape[1]))

XA2 = []

for i in range(XA.shape[2]):
    stock = XA[:,:,i] - stockx0[0,i]
    XA2.append(stock)

XA2 = np.array(XA2)

YA = YA - y0

theta_list = []

for i in range(XA2.shape[0]):
      theta = -np.arctan2((YA[:,:,i],XA2[i,:,:]))
      theta_list.append(theta)

theta = np.asarray(theta_list)
Run Code Online (Sandbox Code Playgroud)

NPE*_*NPE 5

numpy.arctan2()期待两个参数,而你只提供一个(一个元组).您需要删除一对括号:

theta = -np.arctan2((YA[:,:,i],XA2[i,:,:]))
                    ^--------------------^ THESE
Run Code Online (Sandbox Code Playgroud)