【问题标题】:TypeError: only size-1 arrays can be converted to Python scalars from data fileTypeError:只有大小为 1 的数组可以从数据文件转换为 Python 标量
【发布时间】:2021-03-28 22:36:57
【问题描述】:

我的代码:

 f=open('question5.txt','w')
 i=1
 while i <= 10:
      f.write(str(i)+"\n")
      i = i+1
 f.close()

 from numpy import loadtxt

 a = loadtxt("question5.txt",int)

 from math import sqrt

 mean = sum(sqrt(a))/len(a)
 square = mean**2

 print("Root-Mean-Square: "+str(square))

它通过以下方式正确创建数据文件:

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10

我得到的错误是:

 line 15, in <module> mean=sum(sqrt(a))/len(a)
 TypeError: only size-1 arrays can be converted to Python scalars

经过一番研究,我觉得我有点明白这个错误的含义,但我不知道如何纠正这个问题。任何指针将不胜感激。

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    您的错误在于sqrt(a),因为a 是一个数组类型,而sqrt 期待Python scalar type。解决此错误的一种快速方法是通过 list comprehension 创建一个新列表,这只是一种花哨的、简洁的 for 循环方式:

    a2 = [ sqrt(x) for x in a ]
    

    这是每个值的平方根的新列表。这至少是我解释你想要做的事情的方式。

    现在,将平均线调整为:

    mean = sum(a2)/len(a2)
    

    你应该准备好了。

    【讨论】:

    • 或者使用numpy.sqrt,它可以与loadtxt产生的numpy数组一起工作
    猜你喜欢
    • 2021-10-17
    • 2018-07-22
    • 2021-06-24
    • 1970-01-01
    • 2023-01-14
    • 1970-01-01
    • 2019-06-19
    • 2020-08-09
    • 2021-12-19
    相关资源
    最近更新 更多