gpt4 book ai didi

python - 具有选择性条件的 Numpy 洗牌?

转载 作者:行者123 更新时间:2023-11-28 20:30:29 28 4
gpt4 key购买 nike

我想用一个条件打乱一个 2d Numpy 数组。例如,仅随机播放非零值。

import numpy as np
a = np.arange(9).reshape((3,3))
a[2,2] = 0

# Shuffle non-zero values

# Example shuffle with only 0 staying in place
>>> a
array([[0, 5, 3],
[7, 2, 6],
[4, 1, 0]])

最佳答案

你可以这样做:

import numpy as np
a = np.arange(9).reshape((3,3))
a[2,2] = 0
c = a[a!=0]
np.random.shuffle(c)
a[a!=0] = c
a
# array([[0, 6, 5],
# [2, 3, 7],
# [4, 1, 0]])

如果你有不同的情况,你可以这样做:

import numpy as np
a = np.arange(9).reshape((3,3))
a[2,2] = 0
cond = a>3
c = a[cond]
np.random.shuffle(c)
a[cond] = c

更简洁的方式是:

a = np.arange(9).reshape((3,3))
a[2,2] = 0
a[a>3] = np.random.permutation(a[a>3])

关于python - 具有选择性条件的 Numpy 洗牌?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57042126/

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