为什么用nympy数组会有荒谬的值?

2024-04-19 08:35:08 发布

您现在位置:Python中文网/ 问答频道 /正文

import numpy as np
a7=np.empty(100)
a7[0:14]=6 
a7[15:60]=4
a7[61:73]=5
a7[74:99]=6
print a7

那么

[  6.00000000e+000   6.00000000e+000   6.00000000e+000   6.00000000e+000
   6.00000000e+000   6.00000000e+000   6.00000000e+000   6.00000000e+000
   6.00000000e+000   6.00000000e+000   6.00000000e+000   6.00000000e+000
   6.00000000e+000   6.00000000e+000   6.95215775e-310   4.00000000e+000
   4.00000000e+000   4.00000000e+000   4.00000000e+000   4.00000000e+000
   4.00000000e+000   4.00000000e+000   4.00000000e+000   4.00000000e+000
   4.00000000e+000   4.00000000e+000   4.00000000e+000   4.00000000e+000
   4.00000000e+000   4.00000000e+000   4.00000000e+000   4.00000000e+000
   4.00000000e+000   4.00000000e+000   4.00000000e+000   4.00000000e+000
   4.00000000e+000   4.00000000e+000   4.00000000e+000   4.00000000e+000
   4.00000000e+000   4.00000000e+000   4.00000000e+000   4.00000000e+000
   4.00000000e+000   4.00000000e+000   4.00000000e+000   4.00000000e+000
   4.00000000e+000   4.00000000e+000   4.00000000e+000   4.00000000e+000
   4.00000000e+000   4.00000000e+000   4.00000000e+000   4.00000000e+000
   4.00000000e+000   4.00000000e+000   4.00000000e+000   4.00000000e+000
   6.95215673e-310   5.00000000e+000   5.00000000e+000   5.00000000e+000

在每一次转换中,这个异常值出现。或者我可以用另一种方式填充数组吗?我的想法是创建一个包含100个元素的数组,并以上面显示的方式填充它们。你知道吗


Tags: importnumpy元素asnp方式数组empty
3条回答

首先,你知道,片的停止值是独占的。所以不初始化元素14、60、73和99。你知道吗

其次,np.empty不初始化元素,因此您希望使用np.zero将所有元素初始设置为0。你知道吗

[0:14]填充14个值-0…13。a[15:35]填充15…35。所以,在您的代码中,[14]是未赋值的,之前在内存地址中的内容仍然存在。这就是你看到的价值。你知道吗

a7[0:14] = 6  #from 0 to 13, 14 excluded
a7[15:60] = 4 #from 15 to 60, 60 excluded etc.

切片时,第2个参数被排除,因此缺少数组的第14-60-73-99个元素,并且python将它们指定给某个接近零的元素,因为您创建了一个空数组。你知道吗

相关问题 更多 >