使用此代码,我想以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
然后我得到这个数字格式的结果(幂表示法):
[[ -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]
.
.
.
我知道这是电源符号格式,但为什么会这样?我不需要这种格式。为什么会出现这种奇怪的行为?
答案 0 :(得分:2)
您可以使用numpy.array2string
打印特定数组而无需科学记数法:
print(np.array2string(x, suppress_small=True))
默认情况下,对于所有打印都不使用科学记数法,请使用numpy.set_printoptions
:
np.set_printoptions(suppress=True)
至于为什么会发生这种情况 - 在打印浮点数组时,默认行为是在以下情况下使用科学记数法:
0.0001
;或1000
。如果将suppress_small
传递给array2string
(或suppress
至set_printoptions
)
答案 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],
....