Perhaps you came to this situation:
import numpy as np
arr = np.array([(1490775.0, 12037425.0)], dtype=[('foo','<f8'),('bar','<f8')])
arr.flags.writeable = False
G = dict()
G[arr[0]] = 0
print(type(G.keys()[0]))
# <type 'numpy.void'>
print(type(G.keys()[0][0]))
# <type 'numpy.float64'>
print(type(G.keys()[0][1]))
# <type 'numpy.float64'>
print(type(G))
# <type 'dict'>
A tuple of floats is not key in G:
print((1490775.0, 12037425.0) in G)
But the numpy.void instance is the key in G:
print(arr[0] in G)
You would be better off not using numpy.voidsas keys. Instead, if you really need a dict, then maybe first convert the array to a list:
In [173]: arr.tolist()
Out[173]: [(1490775.0, 12037425.0)]
In [174]: G = {item:0 for item in arr.tolist()}
In [175]: G
Out[175]: {(1490775.0, 12037425.0): 0}
In [176]: (1490775.0, 12037425.0) in G
Out[176]: True
source
share