-1

我有一个一维数组,我想从中创建一个新数组,其中只包含用户希望的开头、中间和结尾的部分大小。

import numpy
a = range(10)
a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

我希望 b 等于:

b
array([0, 1, 2, 5, 6, 7, 9])

假设 b 由 a[:3]、a[5:6] 和 a[9] 的串联构成。我当然可以使用诸如 np.concatenate 之类的东西,但是有没有办法通过切片方法或其他任何方法来做到这一点?

4

2 回答 2

1

一种方法是创建要索引数组的索引数组:

import numpy
a = numpy.arange(10)
i = numpy.array([0, 1, 2, 5, 6, 7, 9])  # An array containing the indices you want to extract
print a[i]  # Index the array based on the indices you selected

输出

[0 1 2 5 6 7 9]
于 2013-10-20T12:41:35.833 回答
0

我找到了一个解决方案:

import numpy as np
a = range(10)
b = np.hstack([a[:3], a[5:6], a[9])
b
array([0, 1, 2, 5, 6, 7, 9])

但是切片允许这样的动作吗?

于 2013-10-20T12:57:36.250 回答