我想用一个种子np.random.permutation,像
np.random.permutation
np.random.permutation(10, seed=42)
我得到以下错误:
"permutation() takes no keyword arguments"
我还能怎么做谢谢.
bvjxkvbb1#
如果你想让它在一行中,你可以创建一个新的RandomState,并在上面调用permutation:
RandomState
permutation
np.random.RandomState(seed=42).permutation(10)
这比只设置np.random的种子要好,因为它只会产生局部效果。
np.random
NumPy 1.16更新:
RandomState现在被认为是传统功能。我没有看到任何迹象表明它将很快被弃用,但现在推荐的生成可重复随机数的方法是通过Random Generators,其默认值可以这样示例化:
np.random.default_rng(seed=42).permutation(10)
请注意,对于此生成器,似乎无法保证不同版本的NumPy之间的比特流等效性,而对于RandomState,文档指出"This generator is considered frozen and will have no further improvements. It is guaranteed to produce the same values as the final point release of NumPy v1.16."
bwntbbo32#
np.random.seed(42) np.random.permutation(10)
如果你想多次调用np.random.permutation(10)并得到相同的结果,你还需要在每次调用permutation()时调用np.random.seed(42)。比如说,
np.random.permutation(10)
permutation()
np.random.seed(42)
np.random.seed(42) print(np.random.permutation(10)) print(np.random.permutation(10))
会产生不同的结果:
[8 1 5 0 7 2 9 4 3 6] [0 1 8 5 3 4 7 9 6 2]
而
np.random.seed(42) print(np.random.permutation(10)) np.random.seed(42) print(np.random.permutation(10))
将给予相同的输出:
[8 1 5 0 7 2 9 4 3 6] [8 1 5 0 7 2 9 4 3 6]
xriantvc3#
在前一行设置种子
r8uurelv4#
您可以将其分解为:
import numpy as np np.random.seed(10) np.random.permutation(10)
通过首先初始化随机种子,这将保证您获得相同的排列。
4条答案
按热度按时间bvjxkvbb1#
如果你想让它在一行中,你可以创建一个新的
RandomState
,并在上面调用permutation
:这比只设置
np.random
的种子要好,因为它只会产生局部效果。NumPy 1.16更新:
RandomState
现在被认为是传统功能。我没有看到任何迹象表明它将很快被弃用,但现在推荐的生成可重复随机数的方法是通过Random Generators,其默认值可以这样示例化:请注意,对于此生成器,似乎无法保证不同版本的NumPy之间的比特流等效性,而对于
RandomState
,文档指出"This generator is considered frozen and will have no further improvements. It is guaranteed to produce the same values as the final point release of NumPy v1.16."bwntbbo32#
如果你想多次调用
np.random.permutation(10)
并得到相同的结果,你还需要在每次调用permutation()
时调用np.random.seed(42)
。比如说,
会产生不同的结果:
而
将给予相同的输出:
xriantvc3#
在前一行设置种子
r8uurelv4#
您可以将其分解为:
通过首先初始化随机种子,这将保证您获得相同的排列。