我有一个要转换的函数,以便可以与笨拙的数组 1 一起使用。
由于已知原因,其后的函数用于浮点数但不适用于笨拙的数组。
def Phi_mpi_pi(x):
kPI=(3.14159265)
kTWOPI = 2 * kPI
#while ((x.any() >= kPI).any()): x = x - kTWOPI;
#while ((x.any() < -kPI).any()): x = x + kTWOPI;
while ((x >= kPI)): x = x - kTWOPI;
while ((x < -kPI)): x = x + kTWOPI;
return x;
我试图将其转换为 numpy/awkward 兼容的形式,新功能看起来像
def Phi_mpi_pi(x):
kPI=numpy.array(3.14159265)
kPI = kPI.repeat(len(x))
kTWOPI = 2 * kPI
while ((x >= kPI)): x = x - kTWOPI;
while ((x < -kPI)): x = x + kTWOPI;
return x;
这个函数永远停留在while循环中,我找不到调试它的方法。
该函数的任务是将值保持在 +- kPI 之间的尴尬数组中,但此逻辑没有给出所需的结果。
例如
x=ak.Array([[0.7999999999999998, 1.0, -1.3], [], [-1.4], [-1.8000000000000003, -6.1000000000000005, -1.6000000000000005], [-4.6]])
但是 ((x < -kPI)) 这给出了所需的输出。
>>> ak.to_list(x <= -kPI)
[[False, False, False], [], [False], [False, True, False], [True]]
但不是功能
基于while循环的逻辑,所需的输出应该是b/w +- kPI,有什么可以使用的直接或建议吗?