Neu*_*tar 1 python arrays numpy
与此Matlab问题类似,我想知道如何通过切断大于某个阈值的值来截断numpy数组.所讨论的数组的值按升序排列.
import numpy as np
a=np.linspace(1,10,num=10)
truncatevalue = 5.5
Run Code Online (Sandbox Code Playgroud)
如何生成一个值a小于truncatevalue且仅包含这些值的数组?在这种情况下,结果数组将是
a_truncated=([1., 2., 3., 4., 5.])
Run Code Online (Sandbox Code Playgroud)
额外:我实际上有两个数组,我想根据其中一个数组中的值进行截断.
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
Run Code Online (Sandbox Code Playgroud)
b是一个任意数组,我只选择了一些数字作为一个明确的例子.我想以截断b的相同方式a截断,以便结果如此
a_truncated=([1., 2., 3., 4., 5.])
b_truncated=([19, 17, 15, 14, 29])
Run Code Online (Sandbox Code Playgroud)
我不知道它是否会像重复需要做什么一样简单a_truncated,所以我想包括它,以防有什么不同需要做的事情.
您可以使用布尔索引:
>>> a = np.linspace(1, 10, num=10)
>>> truncatevalue = 5.5
>>> a_truncated = a[a < truncatevalue]
>>> a_truncated
array([ 1., 2., 3., 4., 5.])
Run Code Online (Sandbox Code Playgroud)
本质上,a < truncatevalue返回一个布尔数组,指示元素是否a满足条件.使用此布尔数组进行索引会a返回a每个元素索引所在的视图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])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6379 次 |
| 最近记录: |