鱼C论坛

 找回密码
 立即注册
查看: 1440|回复: 6

[已解决]如何获取数组各元素小数位并保存?

[复制链接]
发表于 2020-5-20 11:00:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

我的思路和代码如下:
        a=[1,2,3,4,5,6]
        b=[3,5,5,10,7,8]
        c=[0,20,40,60,80,100]
        d=[0,29,29,100,57,71]

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([[a],[b]])#构建数组,2*1*3

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



print(data2,data2[1][0][1],end='\n')
print(data3,data3[1][0][1])

------------------------------------------运行结果--------------------------------
[[[  0.  20.  40.  60.  80. 100.]]

[[  0.  29.  29. 100.  57.  71.]]] 28.999999999999996
[[[  0  20  40  60  80 100]]

[[  0  29  29 100  57  71]]] 29

Process finished with exit code 0

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

求大神解答我哪里有问题?
最佳答案
2020-5-20 16:11:41
本帖最后由 jinlovelive 于 2020-5-20 16:42 编辑

np的问题,先自己写个处理函数,处理完数据再np构建吧
a = [round(((i-min(a))/(max(a)-min(a)))*100) for i in a]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-20 11:02:00 | 显示全部楼层
小数精度问题,使用
from decimal import Decimal
可以避免这样的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-20 11:06:11 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-20 11:02
小数精度问题,使用可以避免这样的问题

from decimal import Decimal
import numpy as np

我加上了可还是不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-20 11:17:14 | 显示全部楼层
一只大蟒蛇 发表于 2020-5-20 11:06
from decimal import Decimal
import numpy as np

你加上了你可得用啊……把你程序里所有的数都改成 Decimal
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-20 11:28:34 | 显示全部楼层
额 不是很懂你的意思,我这里不是已经把所有的数改成Decimal了吗?
data1=np.around(data,decimals=2,out=None)#保留两位小数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-20 16:11:41 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jinlovelive 于 2020-5-20 16:42 编辑

np的问题,先自己写个处理函数,处理完数据再np构建吧
a = [round(((i-min(a))/(max(a)-min(a)))*100) for i in a]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-20 22:07:13 | 显示全部楼层
jinlovelive 发表于 2020-5-20 16:11
np的问题,先自己写个处理函数,处理完数据再np构建吧

可以了!看来确实是np的问题,谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-21 02:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表