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. ])