我的问题:
import numpy as np
import itertools
bla = list(itertools.product([0, 1], repeat=3))
[(0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1)]
np.random.choice(bla,size=3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "mtrand.pyx", line 1122, in mtrand.RandomState.choice
ValueError: a must be 1-dimensional
现在,据我了解,numpy并不认为元组是我的一维数组中的对象,而是另一个数组,从而将整个瘦二维都变成了元组。解决此问题的最佳方法是什么?
答案 0 :(得分:2)
您遇到的问题是,当您拥有二维数组时,numpy只能接受一维数组(由于元组);为了解决这个问题,如果需要元组,可以在区间中选择一个随机索引,然后从该索引中获取元素。
idx = np.random.choice(len(bla))
elem = bla[idx]
答案 1 :(得分:1)
这可以帮助
Numpy: Get random set of rows from 2D array
bla = np.random.randint(2, size=(8,3))
bla[np.random.choice(bla.shape[0], 3, replace=False), :]