使用Numpy获取矩阵内的数组的平均值

时间:2012-12-05 00:24:47

标签: python numpy list-comprehension

columnFour = [data[0::, 1] == 1, data[0::, 4]]

数据是一个表,其中1是我正在选择的变量(等于1),4是我试图绘制成一维数组的变量。

4列中的一些值为空(''),我从python获得的错误如下:

Traceback (most recent call last):
File "<filename>", line 62, in <module>
  print np.mean(age, dtype=float);
File "D:\Python27\lib\site-packages\numpy\core\fromnumeric.py", line 2373, in mean
  return _wrapit(a, 'mean', axis, dtype, out)
File "D:\Python27\lib\site-packages\numpy\core\fromnumeric.py", line 37, in _wrapit
  result = getattr(asarray(obj),method)(*args, **kwds)
File "D:\Python27\lib\site-packages\numpy\core\numeric.py", line 235, in asarray
  return array(a, dtype, copy=False, order=order)
ValueError: cannot set an array element with a sequence

如何选择第4列中的所有非空数字,还是选择包括那些空值的所有数字?我宁愿选择所有,但要么会工作。我试图在第4列中提供平均数据以重新插入空值,但在不同的第1列值中对它们求平均值。

例如,第4列中column 1 == 1将获得平均值的所有数字,然后是column 1 == 1将重新插入该平均值的空值。

编辑: 我使用for循环来浏览数据。

表示数据中的x:     如果x [1] =='1'且x [4]:         first.append(np.float(X [4]))
    如果x [1] =='2'且x [4]:         second.append(np.float(X [4]))     如果x [1] =='3'和x [4]:         third.append(np.float(X [4]))

结果是三个数组具有我正在寻找的不同值,然后可以进行平均并将其放回数据中的漏洞中。

1 个答案:

答案 0 :(得分:0)

我想你想要这样的东西:

mask = data[:, 1] == 1
average = np.mean(data[mask, 4])

您提供的代码中没有列表理解,您只需创建一个包含两个元素的列表,第一个data[:, 1] == 1和第二个data[:, 4]