'numpy.float64' object is not iterable
numpy.linspace()
gives you a one-dimensional NumPy array. For example:
>>> my_array = numpy.linspace(1, 10, 10)
>>> my_array
array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.])
Therefore:
for index,point in my_array
cannot work. You would need some kind of two-dimensional array with two elements in the second dimension:
>>> two_d = numpy.array([[1, 2], [4, 5]])
>>> two_d
array([[1, 2], [4, 5]])
Now you can do this:
>>> for x, y in two_d:
print(x, y)
1 2
4 5
Related videos on Youtube
Erica
Interested in GIS modeling, databases, web interfaces. MS in geography with experience in ESRI products, including Desktop, Pro, Server, SDE, Utility Network, and ArcPy.
Updated on July 09, 2022Comments
-
Erica almost 2 years
I'm trying to iterate an array of values generated with numpy.linspace:
slX = numpy.linspace(obsvX, flightX, numSPts) slY = np.linspace(obsvY, flightY, numSPts) for index,point in slX: yPoint = slY[index] arcpy.AddMessage(yPoint)
This code worked fine on my office computer, but I sat down this morning to work from home on a different machine and this error came up:
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
is just an array of floats, and the script has no problem printing the contents -- just, apparently iterating through them. Any suggestions for what is causing it to break, and possible fixes?-
Robert Kern almost 11 yearsOne does not iterate over an array of floats with
for index, point in slX:
. This will not work in any version of Python with any version of numpy. Instead, did you actually runfor index, point in enumerate(slX):
on your office computer? That would seem to be what you are intending to accomplish. -
Erica almost 11 yearsSame versions of numpy, python, and Arc. I don't need to work in float64 and frankly didn't know I was until the error was thrown. Robert, as far as I know the code is exactly the same (I saved it in my Dropbox folder, however, so it's possible there was a sync error somewhere between there and here which means I'm working with an older version; the
enumerate(slX)
makes a lot more sense)
-
-
MSIS almost 4 yearsMuller: Sorry for necropost. I am having a similar error message when defining variance: I already defined the mean, mean(Y). Now I set Def :Var(Y): y_bar=mean(Y)