我需要获取一系列的弧度值,并将它们转换为-pi到pi的间隔。
这是奇异值的函数
def angle_truncation(angle):
while angle < 0.0:
angle += np.pi * 2
return ((angle + np.pi) % (np.pi * 2)) - np.pi
angle = 5.
print(angle_truncation(angle))
>> -1.28318530718但是,由于while循环,这不能像numpy数组那样工作。那么,上面的函数会被转换成使用向量化/广播而不是仅仅添加一个for循环来处理numpy数组吗?
即
a = np.fill((3, 1), 5.)
print(angle_truncation(a))
>> [[-1.28318530718, -1.28318530718, -1.28318530718]]发布于 2018-02-03 16:03:47
这个while循环是不必要的,您只需要取商数的ceil():
angle_trunc = lambda a: (a+np.ceil(abs(a)/(2*np.pi))*2*np.pi+np.pi)%(np.pi*2) - np.pi发布于 2018-02-03 16:32:13
如何计算pi的分数,然后将其结果的倍数添加到数组中。
import numpy as np
def angle_trunc(array) :
below_pi = array < np.pi
fractions = np.abs(array[below_pi]) / (2 * np.pi)
array[below_zero] += np.ceil(fractions) * (2 * np.pi)
return (array % (2 * np.pi)) - np.pihttps://stackoverflow.com/questions/48599126
复制相似问题