一只大蟒蛇 发表于 2020-5-20 11:00:15

如何获取数组各元素小数位并保存?

我有一个3维数组,我要对它进行如下处理:
        1:以最后一个维度为单位进行归一化;
        2:保存归一化值的两位小数;
        3:获取每一个元素两位小数的值,并保存在原数组的对应位置上。例如:0.62,就获取62,然后保存在0.62本来在数组的位置上

我的思路和代码如下:
        a=
        b=
        c=
        d=

a=(a-np.min(a))/(np.max(a)-np.min(a))#归一化
b=(b-np.min(b))/(np.max(b)-np.min(b))

data=np.array([,])#构建数组,2*1*3

data1=np.around(data,decimals=2,out=None)#保留两位小数
data2=data1*100#扩大100倍,以获取小数点后面的数值
=data2.shape
data3=np.array([,])#data3为理论上我想得到的数组
# print(data1,end='\n')
# print('乘100后',end='\n')



print(data2,data2,end='\n')
print(data3,data3)

------------------------------------------运行结果--------------------------------
[[]

[]] 28.999999999999996
[[]

[]] 29

Process finished with exit code 0

可以看到使用我写的程序结果对照我期望得到的结果(下方的数组)有两个问题:
        1:每个元素后面有个小数点
        2:我取第二行第二个元素29的值,返回的确实28.999.。。。

求大神解答我哪里有问题?

永恒的蓝色梦想 发表于 2020-5-20 11:02:00

小数精度问题,使用from decimal import Decimal可以避免这样的问题

一只大蟒蛇 发表于 2020-5-20 11:06:11

永恒的蓝色梦想 发表于 2020-5-20 11:02
小数精度问题,使用可以避免这样的问题

from decimal import Decimal
import numpy as np

我加上了可还是不行

永恒的蓝色梦想 发表于 2020-5-20 11:17:14

一只大蟒蛇 发表于 2020-5-20 11:06
from decimal import Decimal
import numpy as np



你加上了你可得用啊……把你程序里所有的数都改成 Decimal

一只大蟒蛇 发表于 2020-5-20 11:28:34

额 不是很懂你的意思,我这里不是已经把所有的数改成Decimal了吗?
data1=np.around(data,decimals=2,out=None)#保留两位小数

jinlovelive 发表于 2020-5-20 16:11:41

本帖最后由 jinlovelive 于 2020-5-20 16:42 编辑

np的问题,先自己写个处理函数,处理完数据再np构建吧
a =

一只大蟒蛇 发表于 2020-5-20 22:07:13

jinlovelive 发表于 2020-5-20 16:11
np的问题,先自己写个处理函数,处理完数据再np构建吧

可以了!看来确实是np的问题,谢谢!
页: [1]
查看完整版本: 如何获取数组各元素小数位并保存?