0

すべての要素の値が <= 100 である整数配列のリストがあります。すべての配列の等しくない要素間の最小の差を把握する必要があります。これまでのところ、次のものがあります ( item1 つの配列を表します)。

unq  = numpy.unique(item)
mind = numpy.amin(
        (numpy.append(unq, [999]))
       -(numpy.append([-999],unq))
       )

Iを使用しnumpyて、最初に一意の要素の並べ替えられた配列を取得します。最後に大きな正の数を追加し、最初に大きな負の数を追加した後、これら2つの配列を減算して最小値を取得します。

これを行うより速い方法はありますか?

4

1 に答える 1

1

私はあなたの解決策は大丈夫だと思いますが、使用する代わりに次のように使用numpy.appendする方が良いでしょう:np.diffnp.diff(np.unique(a))

In [1]: import numpy as np

In [2]: a = np.random.randint(0,100,size=50)

In [4]: np.unique(a)
Out[4]: 
array([ 0,  2,  3,  5,  7,  8, 15, 18, 20, 22, 23, 27, 30, 31, 32, 33, 37,
       38, 42, 43, 45, 48, 49, 57, 59, 62, 65, 70, 74, 75, 76, 78, 79, 80,
       83, 84, 88, 91, 93, 94, 96, 98])

In [5]: np.diff(np.unique(a))
Out[5]: 
array([2, 1, 2, 2, 1, 7, 3, 2, 2, 1, 4, 3, 1, 1, 1, 4, 1, 4, 1, 2, 3, 1, 8,
       2, 3, 3, 5, 4, 1, 1, 2, 1, 1, 3, 1, 4, 3, 2, 1, 2, 2])

In [6]: np.diff(np.unique(a)).min()
Out[6]: 1
于 2013-03-04T09:43:45.150 に答える