我有一个二维数组
RAW
和一维数组
a = array([[5, 0, 1, 0],
[0, 1, 3, 5],
[2, 3, 0, 0],
[4, 0, 2, 4],
[3, 2, 0, 3]])
哪个(b = array([1, 2, 1, 2, 2])
)告诉我们我们要从数组b
的每一行中选择多少个非零元素。
例如,a
告诉我们必须从b[0] = 1
中选择1个非零元素,a[0]
告诉我们必须从{{ 1}},依此类推。
对于一维数组,可以使用b[1] = 2
完成,但是我找不到二维数组的处理方法,因此必须使用a[1]
循环来减慢计算速度
我希望将结果作为2d数组作为
np.random.choice
在这里,我们在第1行有1个元素,在第2行有2个元素,在第3行有1个元素,依此类推,如数组b所示。
答案 0 :(得分:0)
这看起来像是竞争编程问题。
我认为您不能使用numpy.random.choice获得结果(我可能是错误的)。
无论如何,请这样想。要从大小为x
的一维数组中选择n
个非零元素,在最坏的情况下它将具有O(n)的复杂度。而且,对于2D数组,如果您采用相同的幼稚方法,则将为O(n ^ 2)。
this帖子几乎与您的问题相似,但numpy.nonzero也是O(n ^ 2)函数。