2011-09-07 21 views
46

に配列に要素を1つ追加は、私は含んでnumpyの配列を持っているnumpyの

[1, 2, 3, 1] 

私は最初の要素を追加したい、すなわち配列の終わりに移動します。

np.concatenate((a, a[0])) 

しかし、私はValueError: arrays must have same number of dimensions

が、私はこのことを理解していないというエラーを取得する - 配列は、両方のちょうど1D配列です:

私は明白なことを試してみました。

+0

'np.insert([1,2,3]、3,1)' – Sparkler

+2

受け入れられた答えを除いて、他のものはかなり不気味です。 –

答えて

74

私は要素を追加するための適切な方法を使用することがより正常だと思う:

numpy.append(a, a[0]) 
+0

あなたは 'append'(そして私の+1)については正しいですが、' concatenate'は[this](http://docs.scipy.org/doc/)のような配列のタプルを取っていると思いますnumpy/reference/generated/numpy.concatenate.html)、[this](http://www.scipy.org/Numpy_Example_List#concatenate)などがあります。 – DMA57361

+0

opps、あなたは正しいです:)(コンマがあるので、大括弧で入れなかったとしてもタプルとして扱います) – steabert

+0

このコマンドは 'a'配列を変更しません。ただし、新しい変更された配列を返します。したがって、 'a'の変更が必要な場合は、' a = numpy.append(a、a [0]) 'を使用する必要があります。 – Amjad

11

a[0]は配列ではなく、aの最初の要素であり、したがって次元はありません。

a[0:1]を代わりに使用してください。これは、aの最初の要素を1つのアイテム配列内に返します。

7

この

np.concatenate((a, np.array([a[0]])) 

http://docs.scipy.org/doc/numpy/reference/generated/numpy.concatenate.html

CONCATENATEしかし[0]の配列でない、配列ことが両方の要素を必要とする。試しますそれがうまくいかない理由です。

+0

または、より単純に 'np.concatenate((a、[a [0]]))'です。リストは自動的に配列型に自動的に昇格され、入力を省くことができます。 –

3
t = np.array([2, 3]) 
t = np.append(t, [4]) 
3

これは少しやり過ぎかもしれないが、私は常にラップアラウンドインデックスのためnp.take機能を使用します:

>>> a = np.array([1, 2, 3]) 
>>> np.take(a, range(0, len(a)+1), mode='wrap') 
array([1, 2, 3, 1]) 

>>> np.take(a, range(-1, len(a)+1), mode='wrap') 
array([3, 1, 2, 3, 1]) 
0

はのはa=[1,2,3]を言ってみましょう、あなたはそれが[1,2,3,1]になりたいです。

あなたがここに

np.append(a,1) 

1を内蔵の追記機能を使用することができますが、それは文字列であり、それはしてもしなくてもよい配列内の要素に属していてもよい、intです。版画:[1,2,3,1]

+0

ようこそStackOverflowへ!コードの書式設定方法については、[このガイド](https://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks)を読んでから、それはより読みやすいです:)これはまた、受け入れられた答えを持つ非常に古い質問です、新しいものに答える方が良い – 0mpurdy

0

このコマンドは、

numpy.append(a, a[0])

a配列を変更しません。ただし、新しい変更された配列を返します。 a変更が必要なのであれば、その後、

a = numpy.append(a,a[0])

を使用する必要があります。

関連する問題