簡単な質問についてnumpyのは:numpyの、名前の列
私はベクトルa
に100個の値をロードします。このベクトルから、2つの列を持つA
という配列を作成します.1つの列の名前は「C1」で、2つ目の列は「C2」、1つはint32
、もう1つはint64
です。例:私はa
から配列を作成する場合、カラムの種類と名前を定義する方法
a = range(100)
A = array(a).reshape(len(a)/2, 2)
# A.dtype = ...?
?
簡単な質問についてnumpyのは:numpyの、名前の列
私はベクトルa
に100個の値をロードします。このベクトルから、2つの列を持つA
という配列を作成します.1つの列の名前は「C1」で、2つ目の列は「C2」、1つはint32
、もう1つはint64
です。例:私はa
から配列を作成する場合、カラムの種類と名前を定義する方法
a = range(100)
A = array(a).reshape(len(a)/2, 2)
# A.dtype = ...?
?
numpyの構造化された配列が命名した列:
import numpy as np
a=range(100)
A = np.array(zip(*[iter(a)]*2),dtype=[('C1','int32'),('C2','int64')])
print(A.dtype)
# [('C1', '<i4'), ('C2', '<i8')]
あなたはこのように列を名前でアクセスすることができます。
print(A['C1'])
# [ 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48
# 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98]
注意をzip
でnp.array
を使用すると、一時から、アレイを構築するためにnumpyのを引き起こすことタプルのリスト。 Pythonのタプルリストは、同等のNumPy配列よりもはるかに多くのメモリを使います。だからあなたの配列が非常に大きい場合は、zip
を使いたくないかもしれません。
代わりに、numpyの配列A
与え、あなたはA
1D 配列を作るためにravel()
を使用して、構造化された配列にそれを回すし、目的のタイプに列を変換する astype
を使用するようにview
を使用することができます。
a = range(100)
A = array(a).reshape(len(a)/2, 2)
A = A.ravel().view([('col1','i8'),('col2','i8'),]).astype([('col1','i4'),('col2','i8'),])
print(A[:5])
# array([(0, 1), (2, 3), (4, 5), (6, 7), (8, 9)],
# dtype=[('col1', '<i4'), ('col2', '<i8')])
print(A.dtype)
# dtype([('col1', '<i4'), ('col2', '<i8')])
あなたは正しいです。 http://docs.scipy.org/doc/numpy-1.4.x/reference/arrays.dtypes.html –
あなたの最善の策は、配列(実際は2)と名前のリストをコンテナクラスにラップして使用することです。 – Keith
@Keith:あなたは特定のクラスを意味しますか(私はnumpyで新しいです)? –
いいえ、私はあなたが作成することを意味します。次に、新しいクラスで定義したメソッドから配列に操作を委譲します。 '__str__'メソッドを定義して、ヘッダで配列をきれいに印刷することもできます。 – Keith