【问题标题】:numpy keeps turning zeroes into very small numbers and "-2147483648"numpy 不断将零变成非常小的数字和 \"-2147483648\"
【发布时间】:2022-11-29 17:20:45
【问题描述】:

我有这个代码

import numpy
a=numpy.pad(numpy.empty([8,8]), 1, constant_values=1)
print(a)

50% 的时间我执行它打印一个普通数组,50% 的时间它打印这个

[[ 1.00000000e+000  1.00000000e+000  1.00000000e+000  1.00000000e+000
   1.00000000e+000  1.00000000e+000  1.00000000e+000  1.00000000e+000
   1.00000000e+000  1.00000000e+000]
 [ 1.00000000e+000  3.25639960e-265  2.03709399e-231 -7.49281680e-111
   9.57832017e-299  8.17611616e-093  9.57832017e-299  1.31887592e+066
  -2.29724802e+236  1.00000000e+000]
 [ 1.00000000e+000  5.11889256e-014 -2.29724802e+236  2.19853714e-004
  -2.29724802e+236 -9.20964279e+232  2.37057719e+043  1.48921177e+048
   5.29583156e-235  1.00000000e+000]
 [ 1.00000000e+000  6.37391724e+057  5.68896808e-235  2.73626021e+067
   6.08210460e-235  1.17578020e+077  6.66029790e-235  7.05235822e-235
   2.13106310e-308  1.00000000e+000]
 [ 1.00000000e+000  7.83852638e-235  2.13214956e-308  8.62479942e-235
   2.13323602e-308  9.41107246e-235  2.13432248e-308  1.61214828e+063
   1.35001671e-284  1.00000000e+000]
 [ 1.00000000e+000  7.20990215e-264  9.57831969e-299  5.06352214e+139
   3.18093720e+144  1.21642092e-234  1.25562635e-234  2.13866833e-308
   1.41045067e-234  1.00000000e+000]
 [ 1.00000000e+000  2.13975479e-308  1.56770528e-234  2.14084125e-308
   1.72495988e-234  2.14192771e-308  1.88221449e-234  2.14301418e-308
   2.03946910e-234  1.00000000e+000]
 [ 1.00000000e+000  2.14410064e-308  2.19672371e-234  2.14518710e-308
   2.35397832e-234  2.14627356e-308  1.61656736e+063  1.35004493e-284
   7.20998544e-264  1.00000000e+000]
 [ 1.00000000e+000  3.93674833e-241  7.20999301e-264  6.00700127e-246
   2.03709519e-231 -5.20176578e-111  9.57832021e-299  5.66452894e+075
  -2.29724802e+236  1.00000000e+000]
 [ 1.00000000e+000  1.00000000e+000  1.00000000e+000  1.00000000e+000
   1.00000000e+000  1.00000000e+000  1.00000000e+000  1.00000000e+000
   1.00000000e+000  1.00000000e+000]]

更糟糕的是,当我执行 .astype(int) 时,它会一直这样做

[[          1           1           1           1           1           1
            1           1           1           1]
 [          1           0           0           0 -2147483648           0
  -2147483648           0           0           1]
 [          1           0           0 -2147483648           0           0
            0           0 -2147483648           1]
 [          1           0           0           0           0 -2147483648
            0           0           0           1]
 [          1           0           0           0           0           0
  -2147483648           0           0           1]
 [          1           0           0 -2147483648           0           0
            0           0           0           1]
 [          1           0 -2147483648           0           0           0
  -2147483648           0 -2147483648           1]
 [          1           0 -2147483648 -2147483648           0 -2147483648
            0           0 -2147483648           1]
 [          1           0           0           0           0           0
            0           0           0           1]
 [          1           1           1           1           1           1
            1           1           1           1]]

尝试使用普通的 python 3.11 和 anaconda 3.9。

我用谷歌搜索,但找不到解决此问题的方法,因此将不胜感激。帖子需要有更多的文字,这样它就不是“主要是代码”,它让我可以发布它。我想知道是否有任何好的方法可以解决我所描述的问题。正如我所写的,我在两个不同版本的 python 上测试了它。不幸的是,两者都会导致相同的问题。

【问题讨论】:

    标签: python arrays numpy


    【解决方案1】:

    您正在使用 numpy.empty 这是一个

    阵列的未初始化(任意)数据给定的形状、数据类型和顺序。对象数组将被初始化为 None。

    documentation

    使用 numpy.zerosnumpy.ones 从正确的初始化数组开始。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-20
      • 1970-01-01
      • 1970-01-01
      • 2020-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多