我有一个函数,有时会给我一个列表列表,其中嵌套列表有时只有一个项目,比如这个:
a = [['1'], ['3'], ['w']]
并希望从该主列表 a
中随机选择一项。如果我尝试在此列表中使用 np.random.choice
,我会得到一个 ValueError: a must be 1-dimensional
。
但如果列表是:
b = [['1'], ['3'], ['w', 'w']]
然后使用 np.random.choice
工作得很好。为什么是这样?以及如何才能从两种类型的列表中随机选择?
最佳答案
我认为 choice
是首先将您的列表变成一个数组。
在第二种情况下,这个数组是一个 dtype 对象的一维数组:
In [125]: np.array([['1'], ['3'], ['w', 'w']])
Out[125]: array([['1'], ['3'], ['w', 'w']], dtype=object)
In [126]: _.shape
Out[126]: (3,)
第二个,它生成一个二维字符串数组:
In [127]: np.array([['1'], ['3'], ['w']])
Out[127]:
array([['1'],
['3'],
['w']],
dtype='<U1')
In [128]: _.shape
Out[128]: (3, 1)
这是一个定期出现的问题。 np.array
尝试创建输入允许的高维数组。
关于python - 从列表列表中随机选择项目给出 ValueError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38817357/