2

要素が の順列である 1D 配列があり0:N、この順列の最初の K 個の要素を取得する必要があります

たとえば、順列が

0    [[9]
1     [0]
2     [1]
3     [2]
4     [3]
5     [4]
6     [5]
7     [6]
8     [7]
9     [8]]

最初の 3 つの要素は 9 、 8 、 7 です

コードは

    n = start
    r = zeros (nodeCount, dtype = int)
    i = 0
    while (self.nodes[n][direction] != stop):
        r[i] = n
        n = self.nodes[n][direction]
        i+=1

順列から要素を抽出するより高速な方法が必要です。

4

2 に答える 2

0

numpy.rollあなたが求めているのは何ですか?

>>> a = np.arange(10)
>>> b = np.roll(a,1)
>>> b
array([9, 0, 1, 2, 3, 4, 5, 6, 7, 8])
>>> np.roll(b[::-1],1)[:3]
array([9, 8, 7])

コードの最後の行は非常に難解ですがb[::-1]、配列を反転し、np.rollシフトし、[:3]最初の 3 つの要素のみを取ります。

于 2013-09-23T23:33:21.540 に答える