Skip to main content
 首页 » 编程设计

python之使用 Numpy 获取矩阵中数组的平均值

2025年05月04日6lori

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 列值进行平均。

例如,column 1 == 1 处的第 4 列中的所有数字将得到平均值,然后 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]))

结果是三个数组,它们具有我正在寻找的不同值,然后可以取平均值并放回数据中的空洞中。

请您参考如下方法:

我想你想要这样的东西:

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

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