运行以下Python代码:
import numpy as np
a_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 1, 2]]
np.random.choice(a_list, size=20,
replace=True)
字符串
期待这样的结果:
[[7, 8, 9], [1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 1, 2], [1, 2, 3], [1, 2, 3], [10, 1, 2], [1, 2, 3], [7, 8, 9], [1, 2, 3], [1, 2, 3], [10, 1, 2], [4, 5, 6], [4, 5, 6], [10, 1, 2], [10, 1, 2], [7, 8, 9], [1, 2, 3], [7, 8, 9]]
型
但我得到的是下面的错误消息:
ValueError Traceback (most recent call last)
<ipython-input-80-c11957aca587> in <module>()
2 a_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 1, 2]]
3 np.random.choice(a_list, size=20,
----> 4 replace=True)
mtrand.pyx in mtrand.RandomState.choice()
ValueError: a must be 1-dimensional
型
如何从二维列表中随机选择?
5条答案
按热度按时间iqih9akk1#
您需要使用索引:
字符串
或者,更短(基于hpaulj的评论):
型
2sbarzqh2#
Numpy不知道你想从矩阵中提取一个随机行还是一个随机单元。这就是为什么它只适用于一维数据。
你可以使用
random.choice
:字符串
使用Python 3.6或更高版本,您可以直接使用
random.choices
:型
如果你真的想使用一个numpy数组,你必须将你的列表列表转换为一个1-D array of objects.
e5nszbig3#
或者可以执行
map
:字符串
Demo:
型
输出量:
型
trnvg8h34#
带替换采样
使用
random.choices
字符串
采样不更换
使用
random.sample
型
pokxtpni5#
或者,使用random生成索引;然后从数组中切片。适用于任何尺寸
字符串