python - 从列表列表中随机选择项目给出 ValueError

标签 python python-2.7 numpy nested-lists

我有一个函数,有时会给我一个列表列表,其中嵌套列表有时只有一个项目,比如这个:

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 尝试创建输入允许的高维数组。

Prevent numpy from creating a multidimensional array

关于python - 从列表列表中随机选择项目给出 ValueError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38817357/

相关文章:

Python:将浮点范围[0.0,1.0]映射到颜色范围[红色,绿色]?

Python找不到库但pycharm可以

python - 如何使用 map 应用 n 次函数

python - [OpenCV Videocapture]为什么不继续阅读?

python - Numpy 库无法在 Pycharm 中解析

python - 使用 period_range 在 Pandas DataFrame 中生成新行

python - 将 docker 容器内的 spark-submit 发送到 YARN 集群

python - 是否有内置函数可以在 python 中将数字保持在一定范围内?

python-2.7 - Neos 服务器的 XML-RPC 接口(interface)无法识别电子邮件地址

python - 条件避免无限python pandas的划分过程