Seite 1 von 1

len(np.array) hängt von dem Inhalt ab ... ?

Verfasst: Freitag 28. Juni 2019, 10:25
von HoWei
Ich erzeuge ein array mit np.arange() und je nach Grössenordnung der Daten ändert sich die Array-Länge - ich glaube das sollte nicht so sein.
Kann das bitte jemand bestätigen oder mir meinen Fehler aufzeigen ?

Hier das Beispiel (ich erwarte, dass die Länge des Arrays in jedem Fall 1000 ist):

Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:57:36) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import numpy as np
>>> print(np.__version__)
1.16.4
>>>
>>> myarray=np.arange(0,1000,1)
>>> len(myarray)
1000
>>> myarray=np.arange(0, 1.6e-6*1000, 1.6e-6)
>>> len(myarray)
1000
>>> myarray=np.arange(0, 1.6e-7*1000, 1.6e-7)
>>> len(myarray)
1001
>>> #WTF ?
...
>>> myarray=np.arange(0, 1.6e-8*1000, 1.6e-8)
>>> len(myarray)
1001
>>> #WTF ?
...
>>> myarray=np.arange(0, 1.6e-9*1000, 1.6e-9)
>>> len(myarray)
1000
>>> #WHAT IS WRONG WITH THIS ARRAY LENGTH ?

Re: len(np.array) hängt von dem Inhalt ab ... ?

Verfasst: Freitag 28. Juni 2019, 10:36
von __deets__
Du bekommst halt rundungsfehler. Und dadurch ändert sich die Länge. Willkommen in der wunderbaren Welt von IEEE754.

Re: len(np.array) hängt von dem Inhalt ab ... ?

Verfasst: Freitag 28. Juni 2019, 10:43
von Sirius3
@HoWei: dafür ist arange nicht gedacht, nimm statt dessen linspace.

Re: len(np.array) hängt von dem Inhalt ab ... ?

Verfasst: Freitag 28. Juni 2019, 12:17
von ThomasL
https://docs.scipy.org/doc/numpy/refere ... range.html
numpy.arange([start, ]stop, [step, ]dtype=None)
Return evenly spaced values within a given interval.

Values are generated within the half-open interval [start, stop) (in other words, the interval including start but excluding stop). For integer arguments the function is equivalent to the Python built-in range function, but returns an ndarray rather than a list.

When using a non-integer step, such as 0.1, the results will often not be consistent. It is better to use numpy.linspace for these cases.

Re: len(np.array) hängt von dem Inhalt ab ... ?

Verfasst: Freitag 28. Juni 2019, 13:08
von HoWei
Danke - mit "np.linspace()" funktionierts wunderbar !
Problem gelöst!