使用numpy.default_rng作为scipy.sparse.random参数时程序异常原因咨询
问题根因
该问题由SciPy版本与NumPy新随机数接口不兼容导致:
numpy.random.default_rng()返回的是numpy.random.Generator类型实例,属于NumPy 1.17版本推出的新一代随机数生成器接口- SciPy 1.7版本之前,
scipy.sparse.random的random_state参数仅支持整数种子、numpy.random.RandomState实例、None三类输入,未适配Generator类型,传入后会触发参数校验失败,进而导致程序运行异常。
解决方案
- 升级SciPy到1.7及以上版本,该版本开始官方已全面支持将
Generator实例作为random_state参数传入各类随机生成函数 - 若暂不升级版本,可改用旧版
RandomState实例生成随机数,参考代码如下:
import numpy from scipy import sparse rng = numpy.random.RandomState(seed=41) S = sparse.random(m, n, density=0.25, format='csr', random_state=rng)
内容的提问来源于stack exchange,提问作者Henry Thornton
相关产品推荐
相关产品推荐

