NumPyでは、配列のセグメント全体を:
、インデックス範囲のワイルドカードとして使用して割り当てることができます。例えば:
>>> (n, m) = (5,5)
>>> a = numpy.array([[0 for i in range(m)] for j in range(n)])
>>> a
array([[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]])
>>> for i in range(n):
... a[i, :] = [1 for j in range(m)]
>>> a
array([[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1]])
ただし、numpy.array
数値データのみを保持します。任意のオブジェクトを保持でき、NumPy配列のようにアドレス指定できる配列型が必要です。何を使うべきですか?
編集:この範囲割り当て構文の完全な柔軟性が必要です。たとえば、これも機能するはずです。
>>> a[:,1] = 42
>>> a
array([[ 1, 42, 1, 1, 1],
[ 1, 42, 1, 1, 1],
[ 1, 42, 1, 1, 1],
[ 1, 42, 1, 1, 1],
[ 1, 42, 1, 1, 1]])