0

空の配列と空でない配列を連結すると、空でない配列を含む1つの値の配列が生成されますが、浮動小数点数に変更されることがわかりました。例えば:

import numpy as np
np.concatenate([1], [1])
array([1, 1])

しかし

np.concatenate([], [1])
array([1.])

これは np.hstack と同じように機能します

4

1 に答える 1

0

デフォルトでは、コード内の空の配列

np.concatenate([], [1])

は で初期化されdtype=float、concatenate は 2 番目のint配列を にキャストしfloatます。

ここで、空の配列に対して concatenate を使用することがあるかどうかを尋ねる価値があります。明らかに、次のようなコードを書くことは決してありません

a=array([1,2,3])#int array
b=np.concatenate([], a)

これが発生する可能性がある 1 つのケース シナリオは次のとおりです。

a=array([1,2,3])#int array
b=concatenate((a[:j],a)) #usually j!=0 here

その後、何らかの理由でコードが で実行されj=0ます。空であることは事実ですa[:0]が、それでも保持dtype=intされ、予想どおり、連結の結果は整数の配列です。

はい、あなたの例は一見すると予期しない動作を示していますが、それはまったく無害です。

于 2013-10-20T20:22:23.443 に答える