python - 如何截断 numpy 数组中大于指定值的值?

标签 python arrays numpy

类似于this Matlab question ,我想知道如何通过截断大于某个阈值的值来截断 numpy 数组。相关数组的值按升序排列。

import numpy as np
a=np.linspace(1,10,num=10)
truncatevalue = 5.5

如何生成一个 a 值小于 truncatevalue 且仅包含这些值的数组?在这种情况下,结果数组将是

a_truncated=([1., 2., 3., 4., 5.])

奖励:我实际上有两个数组,我想根据其中一个数组中的值截断。

import numpy as np
a=np.linspace(1,10,num=10)
b=np.array([19, 17, 15, 14, 29, 33, 28, 4, 90, 6])
truncatevalue = 5.5

b 是一个任意数组,我只是选择了一些数字作为一个明确的例子。我想以与截断 a 相同的方式截断 b,以便结果为

a_truncated=([1., 2., 3., 4., 5.])
b_truncated=([19, 17, 15, 14, 29])

我不知道它是否会像重复需要做的事情来获得 a_truncated 一样简单,所以我也想将它包括在内,以防出现不同的情况需要完成。

最佳答案

您可以使用 bool 索引:

>>> a = np.linspace(1, 10, num=10)
>>> truncatevalue = 5.5
>>> a_truncated = a[a < truncatevalue]
>>> a_truncated
array([ 1.,  2.,  3.,  4.,  5.])

本质上,a < truncatevalue返回一个 bool 数组,指示 a 中的元素是否存在满足条件。使用此 bool 数组来索引 a返回 a 的 View 其中每个元素的索引是 True .

因此,对于问题的第二部分,您需要做的就是:

>>> b = np.array([19, 17, 15, 14, 29, 33, 28, 4, 90, 6])
>>> b_truncated = b[a < truncatevalue]
>>> b_truncated
array([19, 17, 15, 14, 29])

关于python - 如何截断 numpy 数组中大于指定值的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25575785/

相关文章:

python - Django Heroku 推送失败

python - 无法在 Python 中使用 Happybase 创建简单表

javascript - 重新组合数组中的特定项目

python - 无法在 Python 中分配 1.6 GB

python - 快速 Python/Numpy 频率严重性分布模拟

python - 在 Mac OS X、Windows 上获取 Python 中的根对话框?

c - 仅在数组中使用用户输入的第一个字符

c++ - 为什么我的 add 函数没有将所有数字相加?

python - 使用 python/numpy 进行时间和内存高效的随机采样

python - Pandas:将多索引列标题转换为普通列标题?