14

あなたのnumpy配列は次のとおりです。

 A =    [1,1,2,3,4]

あなたは簡単に行うことができます:

+ .1

そのすべての要素numpy配列に数値を追加するには

A[::2] +1配列全体をそのまま維持しながら、奇数または偶数のインデックス番号に数値を追加する方法を探しています。

ループなしですべての奇数または偶数のインデックス付き要素に数値を追加することは可能ですか?

4

4 に答える 4

25
In [43]: A = np.array([1,1,2,3,4], dtype = 'float')

In [44]: A[::2]  += 0.1

In [45]: A
Out[45]: array([ 1.1,  1. ,  2.1,  3. ,  4.1])

これにより が変更されることに注意してくださいA。変更せずに残したい場合は、最初Aにコピーします。A

In [46]: A = np.array([1,1,2,3,4], dtype = 'float')

In [47]: B = A.copy()

In [48]: B[::2]  += 0.1

In [49]: B
Out[49]: array([ 1.1,  1. ,  2.1,  3. ,  4.1])

In [50]: A
Out[50]: array([ 1.,  1.,  2.,  3.,  4.])
于 2012-08-07T16:03:35.043 に答える
15

以前の回答に加えて、奇数のインデックスを持つ数値を変更するには、A[::2]の代わりにA[1::2]を使用する必要があります

于 2012-08-07T16:18:39.927 に答える
2

リスト内包表記のあるものが機能する可能性があります。

A = [1,1,2,3,4]
A = [A[i] + (0 if (i%2 == 0) else .1) for i in range(len(A))]

三項ですばやく汚れます。お使いのバージョンの Python では動作しない可能性があります。動作するバージョンを思い出せません。


Python 2.7.3 と Python 3.2.3 で確認すると、出力は同じです。

>>> A = [1,1,2,3,4]

>>> A
[1, 1, 2, 3, 4]

>>> A = [A[i] + (0 if (i%2 == 0) else .1) for i in range(len(A))]

>>> A
[1, 1.1, 2, 3.1, 4]
于 2012-08-07T16:11:41.343 に答える