pomegranate____
2021-06-30 16:11
采纳率: 50%
浏览 40
已采纳

python数据处理

有106列,106行数字的文件已读取 求每一行前53个和后53个的平均数,相除后取log2 用的是pycharm

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • Lin_zhicheng 2021-06-30 16:50
    已采纳

    我自己改进了一下,应该是没有错的,你看一下

    import numpy as np
    from numpy import random
    import math
    result=[]
    x = random.randint(2,size=(106,106)) #随机生成一个[106,106]的矩阵
    print(x)
    for j in range(106): # 遍历每一行 
        y1 = x[j,1:53].sum() # 前53的总和 
        y1 = y1/53 
        y2 = x[j,54:106].sum() # 后53的总和 
        y2 = y2/53 
        result.append(math.log(y1/y2)) 
    print(len(result)) # 是106,代表有106个结果
    
    已采纳该答案
    评论
    解决 1 无用
    打赏 举报
  • CSDN专家-黄老师 2021-06-30 16:23

    将106行的数字用列表存储,然后用sum()计算列表各个元素的和,标准库math有计算log2的,如x = math.log2(8)

    评论
    解决 1 无用
    打赏 举报
  • 吃肉的小馒头 2021-06-30 16:25

    可以用pandas处理,分别取到前53和后53的平均数 然后调用log方法计算 math.log(df.iloc[:, [:53]].mean()/df.iloc[:, [53:]].mean(), 2)

    评论
    解决 2 无用 1
    打赏 举报
  • Lin_zhicheng 2021-06-30 16:33

    我给个大概思路 import math for j in range(106) # 遍历每一行 y1 = x[j,1:53].sum() # 前53的总和 y1 = y1/53 y2 = x[j,106:54].sum() # 后53的总和 y2 = y2/53 result.append(math.log(y1/y2)) 意思是这么个意思,因为我这个方面matlab用的比较多,python不是很熟,你让我具体调整下。你先看着哈

    评论
    解决 1 无用
    打赏 举报

相关推荐 更多相似问题