0

numpy.vstack()列名または行名のない複数の配列があり、またはのようなものを使用してそれらを結合したいと思いnumpy.hstack()ます。

構造化配列を作成するときに列と行のラベルを割り当てることができますが、hstackvstackにはこの機能がないようです。

import numpy as np
a1 = np.array([1,2,3,4])
a2 = np.array([5,6,7,8])
a3 = np.vstack([a1,a2],dtype=[('RowName1','double'),('RowName2','double')])

降伏:

TypeError: vstack() got an unexpected keyword argument 'dtype'


助言がありますか?

4

3 に答える 3

2

可能なオプションは次のとおりです(recfunctionsかなり隠されているため):

from numpy.lib import recfunctions
a1 = np.array([1,2,3,4]).astype(('RowName1',float))
a2 = np.array([5,6,7,8]).astype(('RowName2',float))
recfunctions.merge_arrays((a1, a2))

これはありましたが、メモリの再解釈がビューでどのように機能するかという点で注意が必要な問題がいくつかあります。連結された配列を使用して新しい再配列を作成する方がよいでしょう。

あなたはただ論理を好転させることができます:

import numpy    
a1 = np.array([1,2,3,4])
a2 = np.array([5,6,7,8])
# ok, not that beautiful. But if your arrays are the correct type to begin with
# you can skip that astype call. Using `np.c_[]` since it happens to concatenate right.
a3 = np.c_[v1,v2].astype(float).copy('C').view(dtype=[('RowName1',float),('RowName2',float)])
于 2012-12-12T10:36:47.833 に答える
2

パンダを見ることも検討してください。Pandasには、優れたデータフレームデータ構造があります。

もちろん、これにはプロジェクトに別の依存関係を追加する必要があります。幸いなことに、すでにnumpyを使用している場合は、Pandasを簡単に使用できます。

于 2012-12-12T14:42:32.197 に答える
1

vstack構造化配列では機能しませんが、メモリ内で連続している「標準」のnumpy配列でのみ機能します。最も簡単な方法は、空の構造化配列を作成してから、必要な行で埋めることです。

import numpy as np
a3 = np.empty(4, dtype=[('RowName1','double'),('RowName2','double')])
a3['RowName1'] = a1
a3['RowName2'] = a2
于 2012-12-12T10:21:04.293 に答える