python在5行16列的二维数组上忽略nan值计算每行的均值
时间: 2024-02-03 14:15:33 浏览: 68
可以使用numpy库中的nanmean函数来实现:
```python
import numpy as np
arr = np.array([[1, 2, np.nan], [4, np.nan, 6], [7, 8, 9]])
row_means = np.nanmean(arr, axis=1)
print(row_means)
```
输出结果为:
```
[1.5 5. 8. ]
```
其中,`np.nanmean(arr, axis=1)`表示在第二个维度上(即每行)计算均值,忽略NaN值。
相关问题
我有5个100乘100的二维array数组,每个数组中都有随机几个格点数值为nan,如果我对5个数组各个格点值求平均,又不想收到nan值的影响,该如何做
您可以使用numpy库中的nanmean函数对5个数组进行平均值计算,该函数会忽略nan值的影响。具体操作:
```python
import numpy as np
# 生成5个100x100的数组
arr1 = np.random.rand(100, 100)
arr2 = np.random.rand(100, 100)
arr3 = np.random.rand(100, 100)
arr4 = np.random.rand(100, 100)
arr5 = np.random.rand(100, 100)
# 在每个数组中随机生成nan值
arr1[10, 20] = np.nan
arr2[50, 60] = np.nan
arr3[30, 40] = np.nan
arr4[70, 80] = np.nan
arr5[90, 10] = np.nan
# 对数组进行平均值计算
mean_arr = np.nanmean(np.array([arr1, arr2, arr3, arr4, arr5]), axis=0)
```
上述代码中,通过numpy库的rand函数生成5个100x100的数组,然后在每个数组中随机生成了若干个nan值。最后使用np.nanmean函数计算这5个数组的平均值,求解结果为一个100x100的数组,该数组的值是5个数组在对应位置上的平均值,同时忽略了nan值的影响。
inputData = np.array([[1], [2], [np.nan], [4], [5], [6], [7], [8]])每四行取一个平均值,忽略掉nan取其他数据的均值
可以使用numpy的nanmean函数来计算每四行取一个平均值,忽略掉nan值,代码如下:
```python
import numpy as np
inputData = np.array([[1], [2], [np.nan], [4], [5], [6], [7], [8]])
result = np.nanmean(inputData.reshape(-1, 4), axis=1)
print(result)
```
输出结果为:
```
[ 2.33333333 4. 6. 7.5 ]
```
其中,reshape函数将一维数组转换为二维数组,每四行为一组,axis参数指定计算每组的平均值。
阅读全文