2017-02-18 18 views
0

をnumpy.arrayする空のリストを追加は、私はこの私はすでに既存のnumpyの配列</p> <p>に空のリストを追加する方法を把握しようとしている

a = np.array([b]) 
a = np.append(a, []) 
print a # you get array([a, []]) 

bは任意のリストのための配列を取得することができますコードは[a、[]]の代わりに元の[a]を出力します。誰がこれがどのように達成されているのか分かりますか

+0

追加した後、 'a.shape'はどのようになると思いますか? – shx2

+0

これは理にかなっていません。マトリックスの形状を変更することはできません – ZdaR

+0

a.shape =(2L、)@ shx2 – Glacier11

答えて

1

空のリストを配列で持つことができる唯一の方法は、オブジェクトをdtype配列にすることです。

In [382]: a = np.empty((3,),dtype=object) 
In [383]: a 
Out[383]: array([None, None, None], dtype=object) 
In [384]: a[0]=[1,2,3] 
In [385]: a[1]=[] 
In [386]: a 
Out[386]: array([[1, 2, 3], [], None], dtype=object) 

又は(可変長の)リストのリストから

In [393]: np.array([[1,2,3],[]]) 
Out[393]: array([[1, 2, 3], []], dtype=object) 

あなたが別のオブジェクト配列を連結することができる:

In [394]: a = np.empty((1,),object); a[0]=[1,2,3] 
In [395]: a 
Out[395]: array([[1, 2, 3]], dtype=object) 
In [396]: b = np.empty((1,),object); b[0]=[] 
In [397]: b 
Out[397]: array([[]], dtype=object) 
In [398]: np.concatenate((a,b)) 
Out[398]: array([[1, 2, 3], []], dtype=object) 

np.appendconcatenateをラップし、そして追加するように設計されていますスカラーから別の配列へ何もリストが空であるかそうでなければ、予測できません。


私は最後のコメントを取ります。 np.appendは、リストを単純な配列に変換します。これらはすべて同じことをします

In [413]: alist=[1,2] 
In [414]: np.append(a,alist) 
Out[414]: array([[1, 2, 3], 1, 2], dtype=object) 
In [415]: np.concatenate((a, np.ravel(alist))) 
Out[415]: array([[1, 2, 3], 1, 2], dtype=object) 
In [416]: np.concatenate((a, np.array(alist))) 
Out[416]: array([[1, 2, 3], 1, 2], dtype=object) 
関連する問題