python - 如何使用 np.where() 将数组元素划分为类别?
问题描述
我正在尝试使用 np.where() 将数组的元素分为三类。我的数组是mean_house_value = [200.000, 120.000, 111.765, 326.234, 700.090, 99.345, 150.232, 250.000, 940.000, 177.000, 45.000, 42.000, 620.654]
. 数据集称为housing
。house_value_cat
是数据集中我要保存新分类的新列。分类如下:
- mean_house_value < 200.000
- 200.000 < mean_house_value < 400.000
- 400.000 < mean_house_value
到目前为止,我的代码如下:
housing["house_value_cat"] = np.ceil(housing["mean_house_value"]/3)
housing["house_value_cat"].where((housing["house_value_cat"]<200.000) &(housing["house_value_cat"]>400.000))
print(housing["house_value_cat"])
如何200.000 < mean_house_value < 400.000
在我的代码中实现第二个条件 ( )?
[我想要的输出应该是这样的:1
解决方案
Numpy 有一个函数 digitize() 可以做你想做的事:
>>> import numpy as np
>>> mean_house_value = [200.000, 120.000, 111.765, 326.234, 700.090, 99.345, 150.232, 250.000, 940.000, 177.000, 45.000, 42.000, 620.654]
>>> np.digitize(mean_house_value,[0.,200.,400.])
array([2, 1, 1, 2, 3, 1, 1, 2, 3, 1, 1, 1, 3])
您可以使用此结果在数据框中创建一个新列。假设您已经定义了一个名为 Housing 的数据框:
housing["house_value_cat"] = np.digitize(mean_house_value,[0.,200.,400.])
推荐阅读
- django - 在视图函数中使用 Django 的 login_required 装饰器代码?
- windows - 操作系统和控制单元如何交互?
- php - php regex 从字符串中删除方括号和括号
- javascript - Discord.js:无法读取未定义的属性“setActivity”
- c++ - 我收到一条错误消息,提示“没有运算符 << 与这些操作数匹配”,我不确定为什么会出现这种情况
- git - 如何使用个人访问令牌安装 pod?
- css - div右侧的X
- python - 如何在 NetworkX Graph 的 pyvis 可视化中显示按钮?
- reactjs - 使用外部回调响应功能组件状态
- android - Runnable 中的 Android 动画