行うとき:
import numpy
A = numpy.array([1,2,3,4,5,6,7,8,9,10])
B = numpy.array([1,2,3,4,5,6])
A[7:7+len(B)] = B # A[7:7+len(B)] has in fact length 3 !
この典型的なエラーが発生します:
ValueError: could not broadcast input array from shape (6) into shape (3)
A[7:7+len(B)]
長さlen(B)
== 6ではなく長さ3であり、したがってBのコンテンツを受信できないため、これは100%正常です。
これを防ぎ、BのコンテンツをAに簡単にコピーする方法A[7]
。
A[7:???] = B[???]
# i would like [1 2 3 4 5 6 7 1 2 3]
これは「自動ブロードキャスト」と呼ばれる可能性があります。つまり、配列の長さを気にする必要はありません。
編集:別の例len(A) = 20
:
A = numpy.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20])
B = numpy.array([1,2,3,4,5,6])
A[7:7+len(B)] = B
A # [ 1 2 3 4 5 6 7 1 2 3 4 5 6 14 15 16 17 18 19 20]
いつ使用をやめるかを教えてくださいlen(A)
。
A[7:7+len(B)] = B[:len(A)-7]
例:
import numpy
B = numpy.array([1,2,3,4,5,6])
A = numpy.array([1,2,3,4,5,6,7,8,9,10])
A[7:7+len(B)] = B[:len(A)-7]
print A # [1 2 3 4 5 6 7 1 2 3]
A = numpy.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20])
A[7:7+len(B)] = B[:len(A)-7]
print A # [ 1 2 3 4 5 6 7 1 2 3 4 5 6 14 15 16 17 18 19 20]
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加