np.where对不规则numpy数组操作
时间: 2024-10-23 13:01:16 浏览: 33
`np.where()`函数在处理规则形状的NumPy数组时非常有用,但对于不规则数组(如Pandas DataFrame中的Series),其应用略有不同。因为DataFrame中的每一列都是独立的数据结构,`np.where`通常用于逐列地应用条件。
对于不规则数组,`where`函数会按照行或列的方向分别处理每个元素,而不会像在规则数组中那样生成一个新的布尔数组。假设我们有一个DataFrame `df`:
```python
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3, 4],
'B': ['a', 'b', 'c', 'd'],
'C': [5, np.nan, 7, 8]
})
```
你可以使用`np.where`对某一列进行操作,例如查找`C`列中非空值的位置:
```python
# 找到C列中非nan的值及它们的位置
indices, values = np.where(~pd.isnull(df['C']))
```
现在`indices`是一个一维数组,包含对应非空值的位置,`values`则是这些位置上的非空值。
注意,如果你想要对整个DataFrame进行条件过滤,应该先转换为普通二维数组或使用Pandas提供的条件查询功能。
阅读全文