鱼C论坛

 找回密码
 立即注册
查看: 5174|回复: 29

我是新手,帮看下怎么做,悬赏10鱼币

[复制链接]
发表于 2014-12-9 20:37:39 | 显示全部楼层
可以利用numpy模块解决这个问题:

def 文件to数组(路径/文件名txt)
    这个函数完成文件到数组的导入,3列N行的二维数组
    这里要先把空值的Rid填0
    return数组变量 Metrix

def 找出空值(Metrx)
    取第三列RUI的值转换成序列 List_RID
    k=0
    row_num = []
    for i in List_RID:
          if i==0:
               row_num.append (k) #这里就找到哪些Rid是0,然后把他们的序号(下标)给了row_num这个序列
                                                 #假如第2和第5行的RUI是0,那么这里row_num就会是[2,5]
    return row_num

def 计算方案1、2、3需要的和的平均值
      首先是方案一的
      先计算出每个Uid对应Rid的和平均值,可以针对Uid一列进行sorted整形
          将结果导入到新建的字典Row_dict_1{}中,可以使用get方法,形成这样的结果Row_dict_1{Uid:平均值}

      然后是方案二的
      把方案一的Uid换成Iid那一列就行,得到Row_dict_2{Iid:平均值}

def 方案1(Metrx , low_num,Row_dict_1):
     for i in row_num
          利用row_num的每个元素在Metrx中找到对应的Uid,再从Row_dict_1中Row_dict_1[Uid]的值就是该平均值
          填入该平均值到Metrx中替换0
     替换完所有的0后
     return Metrx_1

def 方案2(Metrx , low_num,Row_dict_2):
      与方案1一样,只是把Uid换成了Iid
      return Metrx_2

def 方案3(Metrx , low_num, Row_dict_1,Row_dict_2):
      针对每个row_num元素,先在Metrx中找到Uid与Iid,然后通过查找Row_dict_1[Uid]与Row_dict_1[Iid]
      相加除以2赋值给New_Rid
      将Rid填入该Rid位置替换0
      return Metrx_3
-------------------------------------------------------------
当然这些你得熟悉numpy库、数组索引方式与字典操作方式,有兴趣试试看能否写出来吧~



小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 05:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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