Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 - Fatal编程技术网

Python 按索引数组切片Numpy数组

Python 按索引数组切片Numpy数组,python,arrays,numpy,Python,Arrays,Numpy,我试图用索引数组对Numpy数组进行切片。比如说, array = [10,15,20,25,32,66] indices = [1,4,5] 最佳输出是 [[10][15,20,25,32][66]] 我试过使用 array[indices] 但这只会生成每个单独索引的单个值,而不是中间的所有值。考虑使用,如下所示 产生 [array([10]), array([15, 20, 25, 32]), array([66])] Assplit仅使用断点,其中索引指示断开块的点。因此,

我试图用索引数组对Numpy数组进行切片。比如说,

 array = [10,15,20,25,32,66]
 indices = [1,4,5]
最佳输出是

[[10][15,20,25,32][66]]
我试过使用

 array[indices]
但这只会生成每个单独索引的单个值,而不是中间的所有值。

考虑使用,如下所示

产生

[array([10]), array([15, 20, 25, 32]), array([66])]
As
split
仅使用断点,其中索引指示断开块的点。因此,无需指示
1:4
,这是由断点
1,5
隐式定义的。请考虑使用,如下所示

产生

[array([10]), array([15, 20, 25, 32]), array([66])]
As
split
仅使用断点,其中索引指示断开块的点。因此,无需指示
1:4
,这是由断点
1,5
隐式定义的,根据此生成器生成所需结果:

def slice_multi(array, indices):
    current = 0
    for index in indices:
        yield array[current:index]
        current = index

array = [10,15,20,25,32,66]
indices = [1,4,5]
list(slice(array, indices)) # [[10], [15, 20, 25], [32]]
根据该方法,生成器生成所需的结果:

def slice_multi(array, indices):
    current = 0
    for index in indices:
        yield array[current:index]
        current = index

array = [10,15,20,25,32,66]
indices = [1,4,5]
list(slice(array, indices)) # [[10], [15, 20, 25], [32]]


数组中的三个索引究竟代表什么。我真的不明白如何从给定的输入中获得所需的输出。索引是通过np.where()获得的。因此,基本上索引1、4、5会像这样对数组进行切片:0:1、1:4、4:5您所谓的“最佳输出”不能是切片操作的产物,因为它有一个未定义的形状。@TrevorJudice那么为什么最后的输出结果是66而不是32?重要的是FBeingerest是正确的。你可以得到一个包含你想要的切片的列表。同样正如Mitch所说的,你想要的输出的最后一个元素与你构建它的方式不匹配。你在数组中的三个索引到底代表什么。我真的不明白如何从给定的输入中获得所需的输出。索引是通过np.where()获得的。因此,基本上索引1、4、5会像这样对数组进行切片:0:1、1:4、4:5您所谓的“最佳输出”不能是切片操作的产物,因为它有一个未定义的形状。@TrevorJudice那么为什么最后的输出结果是66而不是32?重要的是FBeingerest是正确的。你可以得到一个包含你想要的切片的列表。同样,正如Mitch所说,您所需输出的最后一个元素与您构建它的方式不匹配。当您考虑到他的评论时,他指出,最后一个片段应该是
数组[4:5]
,这实际上是
[32]
。这产生了切片
[0:1],[1:4],[4:5]
,的结果,如评论中所述。我刚刚给出了符合注释的解决方案,因为它不同于原始问题中所述的解决方案。
numpy.split(array,index)[-1]
可能更容易。但这正是
np.array\u slice
所做的-沿所需轴迭代切片并返回数组列表。看看它的代码。它没有被编译。当你考虑到他的评论时,他说最后一个片段应该是
数组[4:5]
,这确实是
[32]
。这产生了切片
[0:1],[1:4],[4:5]
的结果,如评论中所述。我刚刚给出了符合注释的解决方案,因为它不同于原始问题中所述的解决方案。
numpy.split(array,index)[-1]
可能更容易。但这正是
np.array\u slice
所做的-沿所需轴迭代切片并返回数组列表。看看它的代码。它没有编译。这是一个多么有用的小函数
np.split
!要是它能做多个轴就好了。这就是我想要的。谢谢。这是一个多么有用的小函数
np.split
!要是它能做多个轴就好了。这就是我想要的。非常感谢。