用包含字符串的numpy数组查找特定列的总和?

时间:2018-11-01 02:53:57

标签: python

我试图在数组中找到第二列的总和。我的以下代码是:

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 _”

尝试查询错误代码,但收效甚微。指定的列是一列数字。我对为什么代码不起作用感到困惑。任何帮助将不胜感激。

2 个答案:

答案 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))