gpt4 book ai didi

python - numpy - 使用 np.random.choice 从矩阵重复采样

转载 作者:太空宇宙 更新时间:2023-11-04 10:19:11 25 4
gpt4 key购买 nike

我有一个二维数组,其中每一行都是一个方向:

directions = np.array([[ 1, 0],
[-1, 0],
[ 0, 1],
[ 0,-1]])

我想从中采样几行,然后执行 cumsum(模拟随机游走)。最好的方法是使用 np.random.choice。例如,要采样 10 个步骤,请执行以下操作:

np.random.choice(directions, size=(10,1))
# returns 2D array of shape (10,2), where each row is
# randomly sampled from the previous one

当我运行它时,出现错误:

ValueError: a must be 1-dimensional

现在,我意识到我有一个二维数组,但在这种情况下它不应该像一维数组的一维数组那样工作吗?这不是广播规则的运作方式吗?

所以,我的问题是如何使这个二维数组充当一维数组的一维数组(即 2 个元素列)。

最佳答案

最简单的方法可能是使用索引。 choice的第一个参数描述如下:

If an ndarray, a random sample is generated from its elements. If an int, the random sample is generated as if a was np.arange(n)

你可以这样做:

directions = np.array([[ 1, 0],
[-1, 0],
[ 0, 1],
[ 0,-1]])
sampleInd = np.random.choice(directions.shape[0], size=(10,))
sample = directions[sampleInd]

请注意,如果您希望结果为二维数组,请将选择输出指定为一维 (10,) 向量而不是 (10, 1),这是二维的。

现在你随机游走的最终目的地是

destination = np.sum(sample, axis = 0)

参数 axis = 0 是必需的,否则 sum 将把二维 sample 数组中的所有元素相加,而不是将每一列相加分别。

关于python - numpy - 使用 np.random.choice 从矩阵重复采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33436698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com