加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 用numpy / scipy中的随机数初始化一个float32矩阵

发布时间:2020-12-16 21:47:33 所属栏目:Python 来源:网络整理
导读:scipy.random.rand()和同一个包中的其他函数 都生成float64数组作为输出 (至少对于Mac OS上的python 2.7.3 64位,scipy版本0.12.0). 我想要的是一个相当大的(N千兆字节)随机初始化的float32矩阵. 是否有一种简单的方法可以直接生成一个,而不是分配双倍空间 对

scipy.random.rand()和同一个包中的其他函数
都生成float64数组作为输出
(至少对于Mac OS上的python 2.7.3 64位,scipy版本0.12.0).

我想要的是一个相当大的(N千兆字节)随机初始化的float32矩阵.
是否有一种简单的方法可以直接生成一个,而不是分配双倍空间
对于float64然后转换为32位?

最佳答案
我会预先分配数组,然后按照Warren Weckesser在评论中推荐的那样随机复制float64s.

如果您正在进行黑客攻击,那么使用统一随机位生成十个浮点数:

>>> bytes_per_float = np.float32(0).nbytes  # ugly,I know
>>> np.frombuffer(random.bytes(10 * bytes_per_float),dtype=np.float32)
array([ -3.42894422e-23,-3.33389699e-01,-7.63695071e-26,7.02152836e-10,3.45816648e-18,2.80226597e-09,-9.34621269e-10,-9.75820352e+08,2.95705402e+20,2.57654391e+25],dtype=float32)

当然,这些不遵循任何好的分布,阵列可能包含NaN或Inf,并且由于对齐问题,代码实际上可能在某些非x86机器上崩溃.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读