it-swarm.com.de

Das Objekt 'numpy.float64' kann nicht iteriert werden

Ich versuche, ein mit numpy.linspace generiertes Array von Werten zu iterieren:

slX = numpy.linspace(obsvX, flightX, numSPts)
slY = np.linspace(obsvY, flightY, numSPts)

for index,point in slX:
    yPoint = slY[index]
    arcpy.AddMessage(yPoint)

Dieser Code hat auf meinem Bürocomputer einwandfrei funktioniert, aber ich habe mich heute Morgen hingesetzt, um von zu Hause aus auf einem anderen Computer zu arbeiten, und dieser Fehler ist aufgetreten:

File "C:\temp\gssm_arcpy.1.0.3.py", line 147, in AnalyzeSightLine
  for index,point in slX:
TypeError: 'numpy.float64' object is not iterable

slX ist nur ein Array von Floats, und das Skript hat kein Problem damit, den Inhalt zu drucken - scheinbar nur, indem es ihn durchläuft. Irgendwelche Vorschläge, warum es kaputt geht, und mögliche Korrekturen?

14
Erica

numpy.linspace() gibt Ihnen ein eindimensionales NumPy-Array. Beispielsweise:

>>> my_array = numpy.linspace(1, 10, 10)
>>> my_array
array([  1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.,  10.])

Deshalb:

for index,point in my_array

kann nicht arbeiten. Sie benötigen eine Art zweidimensionales Array mit zwei Elementen in der zweiten Dimension:

>>> two_d = numpy.array([[1, 2], [4, 5]])
>>> two_d
array([[1, 2], [4, 5]])

Jetzt können Sie dies tun:

>>> for x, y in two_d:
    print(x, y)

1 2
4 5
6
Mike Müller