空のリストを配列で持つことができる唯一の方法は、オブジェクトを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.append
はconcatenate
をラップし、そして追加するように設計されていますスカラーから別の配列へ何もリストが空であるかそうでなければ、予測できません。
私は最後のコメントを取ります。 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)
追加した後、 'a.shape'はどのようになると思いますか? – shx2
これは理にかなっていません。マトリックスの形状を変更することはできません – ZdaR
a.shape =(2L、)@ shx2 – Glacier11