Python的random模块被Numpy的random模块屏蔽

5 投票
4 回答
4574 浏览
提问于 2025-04-17 04:47

当我调用 random.sample(arr,length) 时,出现了一个错误,提示 random_sample() takes at most 1 positional argument (2 given)。经过一些搜索,我发现我其实是在调用 Numpy 的随机采样函数,而我想用的是随机模块里的采样函数。我尝试用不同的名字导入 Numpy,但问题并没有解决。不过,我在程序的其他部分还是需要用到 Numpy。

有什么想法吗?谢谢!

4 个回答

5

这不应该发生。检查一下你的代码,看看有没有像 from numpy import * 这样的错误导入。

5

确保导入的内容要分开写:

>>> import numpy.random
>>> import random         # python's random
14

听起来你有类似这样的代码:

import random
from numpy import *

而且 random 这个名字被 numpy 的导入给覆盖了。如果你想保留 import * 的写法,那你需要把 random 改个名字:

import random as rnd    # or whatever name you like
from numpy import *

另外,更好的方法是把 numpy 当作一个模块来导入,而不是把它的所有内容直接放到你模块的命名空间里:

import random
import numpy as np      # or leave as numpy, or whatever name you like

撰写回答