Python 用随机值生成Numpy数组时的奇怪行为

Python 用随机值生成Numpy数组时的奇怪行为,python,arrays,numpy,scipy,Python,Arrays,Numpy,Scipy,使用此代码,我想以Numpy数组格式生成一些小数字: np.random.seed(1) syn0 = 2*np.random.random((315,1))-1 这给了我这样的结果: [[-0.16595599] [ 0.44064899] [-0.99977125] [-0.39533485] [ 0.70648822] [-0.81532281] [-0.62747958] [ 0.30887855] [-0.20646505] [ 0.07763347] [-0.1

使用此代码,我想以
Numpy
数组格式生成一些小数字:

np.random.seed(1)
syn0 = 2*np.random.random((315,1))-1
这给了我这样的结果:

[[-0.16595599]
 [ 0.44064899]
 [-0.99977125]
 [-0.39533485]
 [ 0.70648822]
 [-0.81532281]
 [-0.62747958]
 [ 0.30887855]
 [-0.20646505]
 [ 0.07763347]
 [-0.16161097]
      .
      .
      .
但当我将行数更改为316及以上时:

np.random.seed(1)
syn0 = 2*np.random.random((316,1))-1
然后,我得到这个数字格式的结果(幂表示法):


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

您可以通过更改numpy的打印选项来关闭科学记数法:

np.set_printoptions(suppress=True)

syn0
>>> array([[-0.00083166],
           [ 0.45717134],
           [-0.58361112],
           [-0.50393288],
           [ 0.70334375],
           [-0.16830256],
           [ 0.23337013],
           [-0.53266772],
              ....

您可以通过更改numpy的打印选项来关闭科学记数法:

np.set_printoptions(suppress=True)

syn0
>>> array([[-0.00083166],
           [ 0.45717134],
           [-0.58361112],
           [-0.50393288],
           [ 0.70334375],
           [-0.16830256],
           [ 0.23337013],
           [-0.53266772],
              ....

您可以使用以下方法打印不带科学符号的特定数组:

要在所有打印中默认不使用科学记数法,请使用:

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

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

如果将
suppress\u small
传递给
array2string
(或
suppress
传递给
set\u printoptions

可以使用以下方法打印特定数组,而无需使用科学符号:

要在所有打印中默认不使用科学记数法,请使用:

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

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

如果将
suppress\u small
传递给
array2string
(或
suppress
传递给
set\u printoptions
),则此行为将被抑制。

这只是一种表示。数组中的任何内容都不会更改。为什么会这样?可能是因为在采集更多样本时,值的分布可能会增加,并且numpy的打印函数中存在一些阈值。当然,你可以让numpy随意打印。考虑阅读文档。@ SasCha:但是我如何才能看到真正的价值(非权力格式),这只是一个表示。数组中的任何内容都不会更改。为什么会这样?可能是因为在采集更多样本时,值的分布可能会增加,并且numpy的打印函数中存在一些阈值。当然,你可以让numpy随意打印。考虑阅读文档。@ SasCha:但是我如何才能看到真正的价值(非权力格式)
print(np.array2string(x, suppress_small=True))
np.set_printoptions(suppress=True)