我有这个密码
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]]
更糟糕的是,当我这样做的时候。
[[ 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上测试了它。不幸的是,两者都导致了同样的问题。
2条答案
按热度按时间anauzrmj1#
您正在使用
numpy.empty
,它是一个给定形状、数据类型和顺序的未初始化(任意)数据的数组。对象数组将被初始化为None。
请参阅documentation。
使用
numpy.zeros
或numpy.ones
以正确初始化的数组开始。lxkprmvk2#
问题在于一个空数组是用
np.empty
初始化的,我不是计算机及其工作原理方面的Maven,但我确实知道的是,当一个空数组被初始化时,分配一个存储器块,用于保存新数组的值。该存储器块可以包含先前初始化的值。基本上仍有一些1's和零。当你第一次改变np.pad
中的值时,旧的内存会被覆盖。我认为你试图做的是np.zeros()
。比较:```
`