Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 以多个值拆分numpy数组?_Python_Arrays_Numpy_Split - Fatal编程技术网

Python 以多个值拆分numpy数组?

Python 以多个值拆分numpy数组?,python,arrays,numpy,split,Python,Arrays,Numpy,Split,根据我的问题 我一直在寻找按照我的意愿分割阵列的方法。我有一个排序数组(2D,按一列中的值排序),并希望将其拆分为多个数组。基于索引的长度不相等,但值的范围相等。我发现的最接近的问题是 但是我想做一些不同的事情。假设我有(1D示例): 我想把它分成范围[0,10][10,20][20,30],这样它就变成了 [0.1, 3.5, 6.5, 7.9] [11.4, 12.0] [22.3, 24.5, 26.7, 29.9] 1d案例可以这样做 >>> A = np.array

根据我的问题 我一直在寻找按照我的意愿分割阵列的方法。我有一个排序数组(2D,按一列中的值排序),并希望将其拆分为多个数组。基于索引的长度不相等,但值的范围相等。我发现的最接近的问题是 但是我想做一些不同的事情。假设我有(1D示例):

我想把它分成范围[0,10][10,20][20,30],这样它就变成了

[0.1, 3.5, 6.5, 7.9] [11.4, 12.0] [22.3, 24.5, 26.7, 29.9]

1d案例可以这样做

>>> A = np.array([0.1, 3.5, 6.5, 7.9, 11.4, 12.0, 22.3, 24.5, 26.7, 29.9])
>>> split_at = A.searchsorted([10, 20])
>>> B = numpy.split(A, split_at)
如果我正确理解了您的问题,这也适用于2d,例如:

>>> A = array([[  0.1,   0. ],
               [  3.5,   1. ],
               [  6.5,   2. ],
               [  7.9,   3. ],
               [ 11.4,   4. ],
               [ 12. ,   5. ],
               [ 22.3,   6. ],
               [ 24.5,   7. ],
               [ 26.7,   8. ],
               [ 29.9,   9. ]])
>>> split_at = A[:, 0].searchsorted([10, 20])
>>> B = numpy.split(A, split_at)
>>> B
[array([[ 0.1,  0. ],
       [ 3.5,  1. ],
       [ 6.5,  2. ],
       [ 7.9,  3. ]]),
 array([[ 11.4,   4. ],
       [ 12. ,   5. ]]),
 array([[ 22.3,   6. ],
       [ 24.5,   7. ],
       [ 26.7,   8. ],
       [ 29.9,   9. ]])]

对于2D数组,看起来我对适当的列进行了切片,然后在此列上使用searchsorted。
>>> A = array([[  0.1,   0. ],
               [  3.5,   1. ],
               [  6.5,   2. ],
               [  7.9,   3. ],
               [ 11.4,   4. ],
               [ 12. ,   5. ],
               [ 22.3,   6. ],
               [ 24.5,   7. ],
               [ 26.7,   8. ],
               [ 29.9,   9. ]])
>>> split_at = A[:, 0].searchsorted([10, 20])
>>> B = numpy.split(A, split_at)
>>> B
[array([[ 0.1,  0. ],
       [ 3.5,  1. ],
       [ 6.5,  2. ],
       [ 7.9,  3. ]]),
 array([[ 11.4,   4. ],
       [ 12. ,   5. ]]),
 array([[ 22.3,   6. ],
       [ 24.5,   7. ],
       [ 26.7,   8. ],
       [ 29.9,   9. ]])]