2016-03-06 7 views
7

Ich habe versucht, Python numpy.where Funktion zu verwenden, um die Position eines bestimmten Werts zu bestimmen, aber aus irgendeinem Grund bestimmt es falsch False wo der Wert tatsächlich gefunden wird. Dadurch wird ein leeres Array zurückgegeben. Siehe unten:Numpy.where Funktion findet keine Werte in Array ... Wer weiß warum?

>>>lbpoly=numpy.array([ 5.45 5.5 5.55 5.6 5.65 5.7 5.75 5.8 5.85 5.9 5.95 6. 
6.05 6.1 6.15 6.2 6.25 6.3 6.35 6.4 6.45 6.5 6.55 6.6 
6.65 6.7 6.75 6.8 6.85 6.9 6.95 7. ]) 

>>>cpah=numpy.where(lbpoly==6.2) 

>>>print cpah 

>>>(array([], dtype=int32),) 

Weiß jemand, warum das passiert? Ich habe viele verschiedene Varianten ausprobiert, sogar mit < und > Logik. Aber das erzeugt Indizes für 2 Werte.

+0

ist Ihr 'lbpoly' ein numpy-Array? Sieht aus wie eine Liste. – dede

+0

Eine Liste wird mit Kommas, numpy Arrays ohne (normalerweise) angezeigt. – hpaulj

+0

@dede Ja, es ist ein Array. In meiner Eile habe ich es hier falsch platziert, um wie eine Liste auszusehen. – Lawrence

Antwort

6

Es gibt sehr wenig Bedeutung beim Vergleichen von Gleitkommazahlen; Insbesondere kann man viel lernen, wenn man die gedruckte Darstellung von Gleitkommazahlen beobachtet. (Weitere here.)

Probieren Sie etwas wie folgt aus:

import numpy as np 

lbpoly= np.array([4.0, 6.2]) 

>>> np.where(np.isclose(lbpoly, 6.2)) 
(array([1]),) 
Verwandte Themen