如何强制numpy将二维数组解释为一维

时间:2019-06-29 09:36:39

标签: python numpy multidimensional-array

我的问题:

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并不认为元组是我的一维数组中的对象,而是另一个数组,从而将整个瘦二维都变成了元组。解决此问题的最佳方法是什么?

2 个答案:

答案 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), :]