我做了如下分类.

1~4 : 0
5~9 : 1
10~15 : 2

我有一个numpy数组如下.

np.array([2, 5, 10, 13, 7, 9])

我怎样才能最快地根据给定的条件改变numpy数组,如下所示?

np.array([0, 1, 2, 2, 1, 1])

因为我认为"for loop"会消耗很多时间.

有什么方法可以使时间计算最快?

推荐答案

您也可以使用np.searchsorted,如下所示:

a = np.array([2, 5, 10, 13, 7, 9])
np.searchsorted([4, 9, 15], a)
array([0, 1, 2, 2, 1, 1], dtype=int64)

labels = np.array([23, 45, 87])
labels[np.searchsorted([4, 9, 15], a)]
array([23, 45, 87, 87, 45, 45])

Python相关问答推荐

在Python中对分层父/子列表进行排序

Matlab中是否有Python的f-字符串等效物

类型错误:输入类型不支持ufuncisnan-在执行Mann-Whitney U测试时[SOLVED]

运行终端命令时出现问题:pip start anonymous"

无法使用DBFS File API路径附加到CSV In Datricks(OSError Errno 95操作不支持)

Pre—Commit MyPy无法禁用非错误消息

Pandas计数符合某些条件的特定列的数量

mypy无法推断类型参数.List和Iterable的区别

python中的解释会在后台调用函数吗?

Plotly Dash Creating Interactive Graph下拉列表

并行编程:同步进程

无法在Spyder上的Pandas中将本地CSV转换为数据帧

删除特定列后的所有列

获取git修订版中每个文件的最后修改时间的最有效方法是什么?

ModuleNotFoundError:Python中没有名为google的模块''

如何获取包含`try`外部堆栈的`__traceback__`属性的异常

Django更新视图未更新

通过对列的其余部分进行采样,在Polars DataFrame中填充_null`?

函数()参数';代码';必须是代码而不是字符串

为什么在更新Pandas 2.x中的列时,数据类型不会更改,而在Pandas 1.x中会更改?