例如,给定一个python numpy.ndarray a = array([[1, 2], [3, 4], [5, 6]]),我想选择数组的第0行和第2行a到一个新数组b,这样b就变成了array([[1,2],[5,6]].
我需要解决方案来处理更常见的问题,原始的2d数组可以有更多的行,我应该能够根据一些不相交的范围选择行.一般来说,我一直在寻找类似于a[i:j] + a[k:p]1-d列表的东西,但似乎2d-arrays不会以这种方式加起来.
更新
似乎我可以使用vstack((a[i:j], a[k:p]))这个工作,但有没有任何优雅的方式来做到这一点?
您可以使用列表索引:
a[ [0,2], ]
Run Code Online (Sandbox Code Playgroud)
更一般地说,选择行i:j和k:p(我假设在python意义上,意味着行i到j但不包括j):
a[ range(i,j) + range(k,p) , ]
Run Code Online (Sandbox Code Playgroud)
请注意,range(i,j) + range(k,p)创建一个平面列表[ i, i+1, ..., j-1, k, k+1, ..., p-1 ],然后用于索引行的行a.