我试图在数组中找到第二列的总和。我的以下代码是:
import numpy
x = numpy.array([['Physics', 10],['Gravity', 9.81],['Euler', 2.71],['Force', 6],['Mass', 12],['Torque', 8],['pi', 3.14],['Frequency', 2],['Wavelength', 3],['Velocity', 6]])
print(sum(x[:,1]))
我获得以下错误代码: TypeError:+不支持的操作数类型:“ int”和“ numpy.str _”
尝试查询错误代码,但收效甚微。指定的列是一列数字。我对为什么代码不起作用感到困惑。任何帮助将不胜感激。
答案 0 :(得分:0)
该错误来自以下事实:根据文档,sum
的起始值为0
返回“开始”值(默认值:0)加上可迭代的的和 数字
当数组中有字符串时,dtype为U10
,
print(x.dtype) # U10
因此sum
尝试添加和整数以及一个字符串,因此产生了错误,为避免这种情况,可以将其强制转换为浮点数然后求和,例如:
import numpy
x = numpy.array(
[['Physics', 10], ['Gravity', 9.81], ['Euler', 2.71], ['Force', 6], ['Mass', 12], ['Torque', 8], ['pi', 3.14],
['Frequency', 2], ['Wavelength', 3], ['Velocity', 6]])
print(x[:, 1].astype(numpy.float).sum())
输出
62.660000000000004
鉴于您的数组具有混合类型,您需要将其强制转换为浮点型。
答案 1 :(得分:0)
pythonic方法
sum(np.array(x[:,1],dtype=float))