gpt4 book ai didi

python - python中子数组的排列

转载 作者:太空狗 更新时间:2023-10-30 01:07:06 24 4
gpt4 key购买 nike

我有一组标识符,它们被分成三组。对于每个组,我想将它们随机分配到三组中的一组,并将这些分配存储在另一个数组中。因此,对于给定的分组标识符数组(我对它们进行了预排序):

groupings = array([1,1,1,2,2,2,3,3,3])

可能的输出是

assignments = array([0,1,2,1,0,2,2,0,1])

最终,我希望能够生成许多这样的分配列表,并且能够高效地进行。我目前的方法只是创建一个零数组并将每个连续的长度为 3 的子数组设置为 3 的随机排列。

assignment = numpy.zeros((12,10),dtype=int)
for i in range(0,12,3):
for j in range(10):
assignment[i:i+3,j] = numpy.random.permutation(3)

有更好/更快的方法吗?

最佳答案

我能想到的两件事:

  1. 与其在内部循环中访问二维数组 3 行 * 1 列,不如尝试访问它 1*3。首先水平访问 2D 数组通常比首先垂直访问更快,因为它为您提供了更好的空间局部性,这有利于缓存。

  2. 不是每次都运行 numpy.random.permutation(3),如果 3 是固定的并且是一个小数字,尝试生成数组预先排列并将它们保存到数组的常量数组中,例如:(array([0,1,2]), array([0,2,1]), array([1,0,2])。 ..)。您只需每次从中随机选择一个数组即可。

关于python - python中子数组的排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33356910/

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