numpy 在数组中的一个值之后,开始以另一种方式计算

yquaqz18  于 9个月前  发布在  其他
关注(0)|答案(2)|浏览(109)

我需要计算一个Angular 的变化并存储在一个数组中,我遇到了下面的问题:Angular 通过计算增加了它的值,当Angular 的值大于90°时,python开始选择补充值,而不是延续值,类似于这样:
不良方向(正在发生):23.45°,26.7°,...,84.5°,88.33°,85°,82.3° ...
理想方向:23.45°,26.7°,...,84.5°,88.33°,91.2°,94.7° ...
我的代码是:

import math as mt
import numpy as np

l = 85
s = 170
q = 30.07
p = 120

theta = (3.81*np.pi)/180
alfa = np.linspace((104.07*np.pi)/180, (26.19*np.pi)/180, 40)

d = np.sqrt(s**2 + q**2 - 2*s*q*np.cos(alfa))
gama = np.arccos((l**2 + p**2 - s**2 - q**2 + 2*s*q*np.cos(alfa))/(2*l*p))
betalinha = np.arcsin((s / d) * np.sin(alfa))*180/np.pi

print(np.around(betalinha, 2))

字符串
输出量:[66.59 68.46 70.34 72.22 74.12 76.03 77.95 79.88 81.82 83.77 85.74 87.72 89.788.2986.28 84.25 82.21 80.16 78.09 76.01 73.92 71.81 69.69 67.55 65.4 63.23 61.05 58.86 56.65 54.43 52.2 49.95 47.68 45.41 43.12 40.82 38.5 36.18 33.84 31.49]

e3bfsja2

e3bfsja21#

我不知道问题的根源是什么,但我相信你可以纠正它,
1.计算值的差异(小于前一个值的值将产生负值)
1.将diff乘以2和cumsum
1.将其添加到betalinha

# Compute the diff (adding a dummy value to the beginning since diff returns an array of N - 1 length)
diff = np.insert(np.diff(betalinha), 0, 1)

# Reset positive values to 0
diff[diff > 0] = 0

# Fix decreasing values
betalinha -= diff.cumsum() * 2

字符串
输出量:

>>> betalinha
array([ 66.59,  68.46,  70.34,  72.22,  74.12,  76.03,        77.95,  79.88,
        81.82,  83.77,  85.74,  87.72,  89.7 ,  91.11, <---   93.12,  95.15,
        97.19,  99.24, 101.31, 103.39, 105.48, 107.59,       109.71, 111.85,
       114.  , 116.17, 118.35, 120.54, 122.75, 124.97,       127.2 , 129.45,
       131.72, 133.99, 136.28, 138.58, 140.9 , 143.22,       145.56, 147.91])

pdtvr36n

pdtvr36n2#

diff = np.insert(np.diff(betalinha), 0, 1)

while j < len(diff):
    if diff[j] < 0:
        betalinha[j] -= np.pi
        betalinha[j] *= -1
    j+=1

字符串
输出量:

[1.16218675, 1.19480394, 1.22758774, 1.26054302, 1.29367464,
1.32698746, 1.36048627, 1.39417585, 1.42806092, 1.46214611,
1.49643599, 1.53093502, 1.56564752, 1.60057772, 1.63572963,
1.67110713, 1.70671387, 1.74255327, 1.7786285, 1.81494244,
1.85149766, 1.88829639, 1.92534047, 1.96263135, 2.00017004,
2.03795707, 2.07599248, 2.11427574, 2.15280579, 2.19158094,
2.23059888, 2.26985664, 2.30935057, 2.34907629, 2.38902871,
2.42920199, 2.46958953, 2.51018397, 2.55097717, 2.59196023]

相关问题