Python Numpy zip产生了科学的价值表示法

Python Numpy zip产生了科学的价值表示法,python,numpy,Python,Numpy,我试图在所需的索引处向数组添加零 newerror = [] for i in range(40): temp = [] for j in range(20): output = numpy.zeros((196)).astype(numpy.float64) # 196*1 x=index2[i][j].astype(int) # 40*20*49 # filling 49 el

我试图在所需的索引处向数组添加零

newerror = []
    for i in range(40):
        temp = []
        for j in range(20):
            output = numpy.zeros((196)).astype(numpy.float64) # 196*1

            x=index2[i][j].astype(int) # 40*20*49 
            # filling 49 elements into 196 elements
            # at desired indices

            y=error[i][j] # 40*20*49
            for (ind, rep) in zip(x, y):
                output[ind] = rep
            temp.append(output)
        newerror.append(temp) #40*20*196
我已经用上面的代码实现了它。 对于每个输入数组:输出数组中的零将替换为所需索引处的输入值

但我的结果是这样的:一个随机数组出现在科学记数法中,而没有任何要求

(输出件;总输出尺寸:40*20*196)


我“认为”这将在以后的阶段影响我的代码,我无法分享。有什么想法吗?

如果数组中的值范围足够宽,特别是如果有些值足够小,
numpy
用科学符号显示整个数组:

In [410]: input = [0.03302, 0.232323, 0.22222, 0.232344] 
In [411]: np.array(input)
Out[411]: array([ 0.03302 ,  0.232323,  0.22222 ,  0.232344])
In [412]: input[2] *= 1e-6
In [413]: input
Out[413]: [0.03302, 0.232323, 2.2222e-07, 0.232344]
此列表中的一项小到足以使用科学符号

In [414]: np.array(input)
Out[414]: 
array([  3.30200000e-02,   2.32323000e-01,   2.22220000e-07,
         2.32344000e-01])
等效阵列的所有元素以相同的方式显示

zip
步骤与此无关(您不需要迭代来完成分配):

显示器上的科学记数法不应在以后的计算中产生问题。这只是一个显示问题,不会影响数值


从科学符号行复制粘贴:

In [420]: alist =[  0.00000000e+00,  -1.88939223e-01,  -1.99170532e-01,   0.0000
     ...: 0000e+00, 0.00000000e+00,   3.66637802e-02,   0.00000000e+00,   8.0379
     ...: 8680e-02, -1.46634700e-01,   0.00000000e+00]
In [421]: alist
Out[421]: 
[0.0,
 -0.188939223,
 -0.199170532,
 0.0,
 0.0,
 0.0366637802,
 0.0,
 0.080379868,
 -0.1466347,
 0.0]
In [422]: np.array(alist)
Out[422]: 
array([ 0.        , -0.18893922, -0.19917053,  0.        ,  0.        ,
        0.03666378,  0.        ,  0.08037987, -0.1466347 ,  0.        ])


在您最新的显示器中,
-1.59399264e-04
足够小。

可能的重复不会影响数据,它只是用科学记数法打印。哦!你能解释一下为什么这个随机数组是用科学记数法打印的,而这些值与其他值相同吗@eyllanescI在提出问题之前已经考虑过这个解决方案,它是用科学记数法印刷的,因为数值相对较大。如果有充分的理由,请否决投票,并请尝试阅读和理解差异。感谢您抽出时间发布一个有效的示例,因为我正在花时间阅读并尝试帮助您回答您的问题。正如我在前面的评论中提到的,没有真正的小/大价值。所有VAUE的大小均为-10^2混合符号显示的是什么?只是分开打印?它不能是二维数组。但如果没有逗号,它就不能列出。我之前也遇到过类似的问题,数据类型不匹配会产生此类垃圾结果,然后导致错误。因此,我要确保这不会以任何方式影响计算。那么
-1.59399264e-04
呢?
In [415]: arr = np.zeros(10)
In [416]: arr.dtype
Out[416]: dtype('float64')
In [417]: index= [0, 2, 6, 7]
In [418]: arr[index] = input
In [419]: arr
Out[419]: 
array([  3.30200000e-02,   0.00000000e+00,   2.32323000e-01,
         0.00000000e+00,   0.00000000e+00,   0.00000000e+00,
         2.22220000e-07,   2.32344000e-01,   0.00000000e+00,
         0.00000000e+00])
In [420]: alist =[  0.00000000e+00,  -1.88939223e-01,  -1.99170532e-01,   0.0000
     ...: 0000e+00, 0.00000000e+00,   3.66637802e-02,   0.00000000e+00,   8.0379
     ...: 8680e-02, -1.46634700e-01,   0.00000000e+00]
In [421]: alist
Out[421]: 
[0.0,
 -0.188939223,
 -0.199170532,
 0.0,
 0.0,
 0.0366637802,
 0.0,
 0.080379868,
 -0.1466347,
 0.0]
In [422]: np.array(alist)
Out[422]: 
array([ 0.        , -0.18893922, -0.19917053,  0.        ,  0.        ,
        0.03666378,  0.        ,  0.08037987, -0.1466347 ,  0.        ])