首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >生成随机值Numpy数组的奇怪行为

生成随机值Numpy数组的奇怪行为
EN

Stack Overflow用户
提问于 2016-11-22 14:01:10
回答 2查看 126关注 0票数 0

使用此代码,我希望生成一些Numpy数组格式的小数字:

代码语言:javascript
运行
AI代码解释
复制
np.random.seed(1)
syn0 = 2*np.random.random((315,1))-1

这给了我这样的结果:

代码语言:javascript
运行
AI代码解释
复制
[[-0.16595599]
 [ 0.44064899]
 [-0.99977125]
 [-0.39533485]
 [ 0.70648822]
 [-0.81532281]
 [-0.62747958]
 [ 0.30887855]
 [-0.20646505]
 [ 0.07763347]
 [-0.16161097]
      .
      .
      .

但是,当我将行数改为316及以上时:

代码语言:javascript
运行
AI代码解释
复制
np.random.seed(1)
syn0 = 2*np.random.random((316,1))-1

然后我得到这个数字格式的结果(幂表示法):

代码语言:javascript
运行
AI代码解释
复制
[[ -1.65955991e-01]
 [  4.40648987e-01]
 [ -9.99771250e-01]
 [ -3.95334855e-01]
 [ -7.06488218e-01]
 [ -8.15322810e-01]
 [ -6.27479577e-01]
 [ -3.08878546e-01]
 [ -2.06465052e-01]
 [  7.76334680e-02]
 [ -1.61610971e-01]
 [  3.70439001e-01]
         .
         .
         .

我知道这是幂表示法格式,但为什么会发生这种情况?我不需要这个format.Why这个奇怪的行为会发生吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-22 14:26:59

您可以在不使用numpy.array2string的科学符号的情况下打印特定数组。

代码语言:javascript
运行
AI代码解释
复制
print(np.array2string(x, suppress_small=True))

若要默认情况下不对所有打印使用科学符号,请使用numpy.set_printoptions

代码语言:javascript
运行
AI代码解释
复制
np.set_printoptions(suppress=True)

至于为什么会发生这种情况--在打印浮点数组时,默认行为是使用科学表示法,如果:

  • 要打印的最小(绝对非零)值小于0.0001;或
  • 最大(绝对非零)值与最小(绝对非零)值的比值大于1000

如果将suppress_small传递给array2string (或suppress传递给set_printoptions),则此行为将被抑制。

票数 2
EN

Stack Overflow用户

发布于 2016-11-22 14:10:36

您可以通过更改numpy的打印选项来关闭科学符号:

代码语言:javascript
运行
AI代码解释
复制
np.set_printoptions(suppress=True)

syn0
>>> array([[-0.00083166],
           [ 0.45717134],
           [-0.58361112],
           [-0.50393288],
           [ 0.70334375],
           [-0.16830256],
           [ 0.23337013],
           [-0.53266772],
              ....
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40752435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文