取出 np.array 中非nan
时间: 2023-09-09 11:03:07 浏览: 160
要从np.array中提取非nan值,可以使用 np.isnan() 函数来判断元素是否为nan,并使用筛选条件来获取非nan元素。以下是一个示例代码:
```python
import numpy as np
arr = np.array([1, np.nan, 2, 3, np.nan, 4, 5])
result = arr[~np.isnan(arr)]
print(result)
```
输出结果为:[1. 2. 3. 4. 5.]
在示例代码中,首先创建了一个包含nan的np.array。然后,使用 np.isnan() 来检查每个元素是否为nan,返回一个布尔型的np.array,其中True表示元素是nan,False表示元素不是nan。最后,通过在原始数组中使用布尔索引来筛选非nan元素,即使用“~np.isnan(arr)”作为索引。得到的 `result` 即为提取出来的非nan值数组。
值得注意的是,使用上述方法提取出的非nan值将被转换为浮点类型。如果原始数组不是浮点类型,提取出的非nan值数组也会变成浮点类型。如果需要保持原始数组的数据类型,可以通过添加适当的数据类型转换代码来实现。
相关问题
python过滤掉numpy.array中非nan数据实例
要过滤掉numpy.array中的非NaN数据实例,可以使用np.isnan()函数和np.logical_not()函数来完成。
首先,我们需要导入numpy库,并创建一个含有NaN和非NaN数据的numpy数组。
```python
import numpy as np
# 创建一个含有NaN和非NaN数据的numpy数组
arr = np.array([1, 2, np.nan, 4, np.nan, 6])
```
然后,我们可以使用np.isnan()函数来找出数组中的NaN数据,并返回一个布尔值数组。
```python
# 找出数组中的NaN数据
is_nan = np.isnan(arr)
```
接下来,我们可以使用np.logical_not()函数来找出数组中的非NaN数据,并返回一个布尔值数组。
```python
# 找出数组中的非NaN数据
not_nan = np.logical_not(is_nan)
```
最后,我们可以使用这个布尔值数组来过滤掉数组中的非NaN数据实例。
```python
# 过滤掉数组中的非NaN数据实例
filtered_arr = arr[not_nan]
```
这样,我们就得到了一个只包含NaN数据的numpy数组。
np.nan语法
`np.nan`是NumPy库中的一个常量,表示“不是一个数字(Not a Number)”。它通常用于表示缺失的或未定义的值。在NumPy数组中,可以将缺失的或未定义的值设置为`np.nan`。
以下是一些示例:
```python
import numpy as np
# 定义一个包含 np.nan 的数组
a = np.array([1, 2, np.nan, 4])
print(a)
# 判断数组中是否存在 np.nan
print(np.isnan(a))
# 计算数组中非缺失值的平均值
print(np.nanmean(a))
# 替换数组中的 np.nan 为 0
a[np.isnan(a)] = 0
print(a)
```
输出:
```
[ 1. 2. nan 4.]
[False False True False]
2.3333333333333335
[1. 2. 0. 4.]
```
阅读全文