adfa_fdasf_sdg 2024-09-29 12:10 采纳率: 100%
浏览 7
已采纳

puthon数据处理

求解答
print (data[:,0])
print (max(data[:,0]))
data是Excel里面的一列数据,1~25连续整数,前面已经将这列数据转换成了浮点型。
输出结果如下
['1' '2' '3' '4' '5' '6' '7' '8' '9' '10' '11' '12' '13' '14' '15' '16' '17' '18' '19' '20' '21' '22' '23' '24' '25']
9
应该是最大值的25,输出却是9,而将Excel表中的25改成99之后,最大值输出就是99,这是什么原因导致的,该怎么改啊

代码全文如下


import numpy as np
from openpyxl import load_workbook
import matplotlib.pyplot as plt
##########读取数据###########
wb = load_workbook('C:\\Users\\Lenovo\\Desktop\\a.xlsx')
ws=wb.get_sheet_by_name('str1')
rows=ws.max_row#行数         
columes=ws.max_column#列数
lst = []
#####将excel表格里的数据全部读入数组矩阵##########
for col in ws.rows:
 for row in col:
       lst.append(row.value)
shuju=np.array(lst)
original_data=shuju.reshape(rows,columes)
#######创建函数  sigmod  de_sigmod  maxminnorm ##########
def sigmod(x):
    h = 1/(1+np.exp(-x))
    return h   
def de_sigmoid(x):
    return x*(1-x)
data=original_data[1:]#######排除第一行也就是表头的影响
jzcs=data[:,0]####定义第一列数据
x=data[:,0:3].astype('float32')#这是由特征组成的矩阵,分别为加载次数、FWD锤重、大气T
y=data[:,3:].astype('float32')#这是弯沉矩阵+弯沉盆矩阵
y=y.reshape(-1,1)

print (data[:,0])
print (max(data[:,0]))


  • 写回答

3条回答 默认 最新

  • 码踏云端 Java领域新星创作者 2024-09-29 16:08
    关注

    以下内容源自超时代AI智能助手,仅供参考,可行性需要自行评估。

    1. 问题分析

      • 从输出结果看,尽管声称将数据转换为浮点型,但输出的数组元素看起来像是字符串形式。这可能是因为在从Excel读取数据并构建数组的过程中,数据类型转换没有正确执行。
      • 当求最大值时,由于数据可能被当作字符串处理(从输出结果推测),所以按照字符串的比较规则,'9' 比 '25' 大(按字典序),导致错误结果。当把Excel中的最大值改为99时能得到正确结果,可能是因为99是三位数,按字符串比较规则大于两位数的字符串。
    2. 修改后的代码

    import numpy as np
    from openpyxl import load_workbook
    
    
    # 读取数据
    wb = load_workbook('C:\\Users\\Lenovo\\Desktop\\a.xlsx')
    ws = wb.get_sheet_by_name('str1')
    rows = ws.max_row
    columes = ws.max_column
    lst = []
    
    # 将excel表格里的数据全部读入数组矩阵,同时确保转换为浮点型
    for col in ws.rows:
        for row in col:
            if row.value is not None:
                lst.append(float(row.value))
    shuju = np.array(lst)
    original_data = shuju.reshape(rows, columes)
    
    # 排除第一行也就是表头的影响
    data = original_data[1:]
    jzcs = data[:, 0]
    x = data[:, 0:3].astype('float32')
    y = data[:, 3:].astype('float32')
    y = y.reshape(-1, 1)
    
    print(data[:, 0])
    print(np.max(data[:, 0]))
    
    1. 代码解释
      • 在构建 lst 列表时,之前的代码只是简单地将从Excel读取的值添加到列表中,没有确保正确的数据类型转换。修改后的代码在添加到 lst 列表之前,先将每个值转换为浮点型(通过 float(row.value)),这样构建的 numpy 数组中的数据就是正确的浮点型数据。
      • 在求最大值时,使用 np.max 函数对正确类型的数据求最大值,确保得到正确的结果。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已采纳回答 今天
  • 修改了问题 9月29日
  • 创建了问题 9月29日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?