如何从包含多个元素的 numpy 索引结果中获取索引?

How to get indices from numpy index result containing multiple elements?

a=np.random.dirichlet(np.ones(3),size=1)

我想使用三个数字,它们总和为 1。但是,我注意到 a[0] 将是:

array([0.24414272, 0.01769199, 0.7381653 ])

已包含三个元素的索引。

有没有办法把它们分成三个索引?

如果这是您唯一想要的,那么这应该可行:

a=np.random.dirichlet(np.ones(3),size=1)[0]

如果您传递size,则默认行为是return具有指定元素的一维数组,根据文档字符串功能:

size : int or tuple of ints, optional

Output shape. If the give shape is, e.g., (m, n), then m * n * k [where k is size of input and sample sequences] samples are drawn. Default is None, in which case a vector of length k is returned.

通过传递 size=1,您明确告诉它制作一个 size 样本的多维数组(因此,1 样本,使外部维度为 1),其中不传递 size(或传递 size=None)仍将仅生成一组样本,作为单个一维数组。

简短版本:如果您只是挂掉电话中的 ,size=1,您就会得到想要的。