2016-10-11 6 views
0

num35の配列を連続してそれぞれの元の値の間にある数字が最大でユーザが制御するデフォルトの長さになるようにするというのは間違いです。おそらくYにXをオン組み込み関数クイックnumpyの配列の拡張

x=np.array([4,8,4,10]) 

y=np.array([4,5,6,7,8,9,10,11,4,5,6,7,10,11,12,13]) 

私が追加された各要素間の長さは3であった。ここで、すでに存在します。スピードはここで本質的です。私は列のデータが疎な 行列を作成するためにこれを必要とします。私は配列を持っている場合

また、など

s=np.array([0,1]) 

各要素を拡張 倍の任意の量にする簡単な方法があり、例えば4を言うことができます:

s=np.array([0,0,0,0,1,1,1,1]) 
+0

をあなたの質問の後半では、numpy.repeatまたはnumpy.tileを見てみましょう。 – Evert

答えて

2

放送型加算はおそらく最も速いでしょう

In [241]: (x[:,None]+np.arange(4)).ravel() 
Out[241]: array([ 4, 5, 6, 7, 8, 9, 10, 11, 4, 5, 6, 7, 10, 11, 12, 13]) 

difを追加すると難しくなります各サブリストの総量。

repeatに便利です:

In [242]: np.repeat(np.array([0,1]),[3,4]) 
Out[242]: array([0, 0, 0, 1, 1, 1, 1]) 

tileは別の優れたツールです。

+0

すばらしい方法の皆さん、これは最速でした。マハロ! – Canuck

0

私は正確にあることが、あなたが行うことができ、いくつかの創造性でない組み込み関数を知らない:あなたの質問の後半について

>>> x=np.array([4,8,4,10]) 
>>> np.array([x+i for i in range(4)]).T.ravel() 
array([ 4, 5, 6, 7, 8, 9, 10, 11, 4, 5, 6, 7, 10, 11, 12, 13]) 

を、numpy.repeatnumpy.tileを見てみましょう。

0

これは、リスト上で動作します:

def extend(myList, n): 
    extensions = [range(x, x + n) for x in myList] 
    return [item for sublist in extensions for item in sublist] # flatten 

使用を次のように

extend([4, 8, 4, 10], 4)