Python 结构化numpy ndarray,如何获取值
我有一个结构化的numpy ndarray la={'val1':0,'val2':1},我想使用0和1作为键返回VAL,所以当我有0时我希望返回val1,当我有1时返回val2,这应该很简单,但是我的尝试失败了,因为我不熟悉这个结构Python 结构化numpy ndarray,如何获取值,python,numpy,dictionary,key-value,numpy-ndarray,Python,Numpy,Dictionary,Key Value,Numpy Ndarray,我有一个结构化的numpy ndarray la={'val1':0,'val2':1},我想使用0和1作为键返回VAL,所以当我有0时我希望返回val1,当我有1时返回val2,这应该很简单,但是我的尝试失败了,因为我不熟悉这个结构 如何仅返回相应的val,或返回所有val的数组,以便按顺序读取?这看起来像字典,而不是数据数组。假设没有多个键与同一个值关联,则使用 la_reversed = {v: k for k, v in la.items()} 因此,la_reversed[0]将是'
如何仅返回相应的val,或返回所有val的数组,以便按顺序读取?这看起来像字典,而不是数据数组。假设没有多个键与同一个值关联,则使用
la_reversed = {v: k for k, v in la.items()}
因此,la_reversed[0]
将是'val1'
,la_reversed[1]
将是'val2'
您可以使用
list(la.values())
在字典中获得一个值列表,它看起来像字典,而不是数据数组。假设没有多个键与同一个值关联,则使用
la_reversed = {v: k for k, v in la.items()}
因此,la_reversed[0]
将是'val1'
,la_reversed[1]
将是'val2'
您可以使用
list(la.values())
在字典中获得一个值列表,刚刚发现我可以使用la.tolist(),它以某种方式返回一个字典?当我想要一份清单时,唉,从那以后我就能够解决我的问题了 刚刚发现我可以使用la.tolist()并以某种方式返回字典?当我想要一份清单时,唉,从那以后我就能够解决我的问题了 保存Python对象(非数组)时,numpy
将其包装在数组中。对象已被pickle
:
In [112]: np.save('test.npy', {'foo':34})
在较新的numpy
版本中,必须明确允许它加载pickled项:
In [113]: data = np.load('test.npy')
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-113-c5835e6fb31e> in <module>
----> 1 data = np.load('test.npy')
/usr/local/lib/python3.6/dist-packages/numpy/lib/npyio.py in load(file, mmap_mode, allow_pickle, fix_imports, encoding)
451 else:
452 return format.read_array(fid, allow_pickle=allow_pickle,
--> 453 pickle_kwargs=pickle_kwargs)
454 else:
455 # Try a pickle
/usr/local/lib/python3.6/dist-packages/numpy/lib/format.py in read_array(fp, allow_pickle, pickle_kwargs)
720 # The array contained Python objects. We need to unpickle the data.
721 if not allow_pickle:
--> 722 raise ValueError("Object arrays cannot be loaded when "
723 "allow_pickle=False")
724 if pickle_kwargs is None:
ValueError: Object arrays cannot be loaded when allow_pickle=False
In [115]: data = np.load('test.npy',allow_pickle=True)
In [116]: data
tolist
可以提取该对象,也可以提取item()
保存Python对象(非数组)时,
numpy
将其包装到数组中。对象已被pickle
:
In [112]: np.save('test.npy', {'foo':34})
在较新的numpy
版本中,必须明确允许它加载pickled项:
In [113]: data = np.load('test.npy')
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-113-c5835e6fb31e> in <module>
----> 1 data = np.load('test.npy')
/usr/local/lib/python3.6/dist-packages/numpy/lib/npyio.py in load(file, mmap_mode, allow_pickle, fix_imports, encoding)
451 else:
452 return format.read_array(fid, allow_pickle=allow_pickle,
--> 453 pickle_kwargs=pickle_kwargs)
454 else:
455 # Try a pickle
/usr/local/lib/python3.6/dist-packages/numpy/lib/format.py in read_array(fp, allow_pickle, pickle_kwargs)
720 # The array contained Python objects. We need to unpickle the data.
721 if not allow_pickle:
--> 722 raise ValueError("Object arrays cannot be loaded when "
723 "allow_pickle=False")
724 if pickle_kwargs is None:
ValueError: Object arrays cannot be loaded when allow_pickle=False
In [115]: data = np.load('test.npy',allow_pickle=True)
In [116]: data
tolist
可以提取该对象,也可以提取item()
此
{'val1':0,'val2':1}
是一个字典,而不是结构化数组。如果您确实有一个,请共享一个This{'val1':0,'val2':1}
,它是一个字典,而不是结构化数组。如果您确实有一个,请在我的调试器中共享一个,它说这是一个ndarray,当我尝试像使用字典一样使用项或值时,我得到:labels=list(lb.values())AttributeError:'numpy.ndarray'对象没有属性'values'。您是否可以编辑您的问题,以便根据yatu的注释包含MCVE,或者至少在代码中包含此变量的声明?它是一个保存为.npy的变量,该变量实际上是我在keras中创建训练数据集生成器时获得的类索引值:train_generator.class_index,here(),它说:包含从类名到类索引的映射的字典可以通过属性class_index获得。我将其保存为:labels=(train_generator.class_index)np.save('/home/d/Desktop/s/classes',labels),如果文档说明类_索引应该是字典,我不知道为什么你的代码中不会出现这种情况。同样,如果您提供更多的代码,将更容易确定问题是什么。在我的调试器中,它表示这是一个数据数组,当我尝试使用项或值时,我会得到:labels=list(lb.values())AttributeError:'numpy.ndarray'对象没有属性'values'。您是否可以编辑您的问题,以便根据yatu的注释包含MCVE,或者至少在代码中包含此变量的声明?它是一个保存为.npy的变量,该变量实际上是我在keras中创建训练数据集生成器时获得的类索引值:train_generator.class_index,here(),它说:包含从类名到类索引的映射的字典可以通过属性class_index获得。我将其保存为:labels=(train_generator.class_index)np.save('/home/d/Desktop/s/classes',labels),如果文档说明类_索引应该是字典,我不知道为什么你的代码中不会出现这种情况。同样,如果您提供更多的代码,就更容易确定问题所在。