Ich arbeite in Python. Ich habe eine Winkelgröße, für die ich eine variierende Schrittgröße für das Array anstelle eines einheitlichen Gitters haben möchte, das wie np.linspace(0, pi, 100)
für 100 gleiche Schritte erstellt werden kann. Stattdessen möchte ich mehr "Auflösung" (d. H. Eine kleinere Schrittgröße) für Werte nahe 0 und pi, wobei größere Schrittweiten näher an pi/2 rad liegen. Gibt es eine einfache Möglichkeit, dies in Python mit einer Technik zu implementieren, die bereits in numpy oder anderweitig zur Verfügung gestellt wurde?Differenzschrittweite für Array
0
A
Antwort
1
Hier ist, wie np.r_
zu verwenden, um ein Array mit engerem Abstand an dem Enden zu konstruieren, und breiter in der Mitte:
In [578]: x=np.r_[0:.09:10j, .1:.9:11j, .91:1:10j]
In [579]: x
Out[579]:
array([ 0. , 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08,
0.09, 0.1 , 0.18, 0.26, 0.34, 0.42, 0.5 , 0.58, 0.66,
0.74, 0.82, 0.9 , 0.91, 0.92, 0.93, 0.94, 0.95, 0.96,
0.97, 0.98, 0.99, 1. ])
dann x
mit np.pi
skalieren.
Dies ist die Art der Sache, die für np.r_
erstellt wurde. Nicht, dass es etwas Besonderes macht. Es tut das gleiche wie:
np.concatenate([np.linspace(0,.09,10),
np.linspace(.1,.9,11),
np.linspace(.91,1,10)])
Für eine reibungsloseren Abstufung in Abstand, würde ich versuchen, ein einzelnes linspace
mit einer Kurve abbildet.
In [606]: x=np.arctan(np.linspace(-10,10,10))
In [607]: x -= x[0]
In [608]: x /= x[-1]
In [609]: x
Out[609]:
array([ 0. , 0.00958491, 0.02665448, 0.06518406, 0.21519086,
0.78480914, 0.93481594, 0.97334552, 0.99041509, 1. ])
+0
Vielen Dank für die klare und freundliche Antwort – user4437416
Schauen Sie sich 'np.logspace' wahrscheinlich an. – Divakar
Benötigen Sie ein Nummernfeld oder eine Python-Liste? – Brendan
entweder ein numpy Array oder eine Python-Liste würde tun – user4437416