Un approccio potrebbe essere l'utilizzo di record array. Le "colonne" non sarà come le colonne di array NumPy standard, ma per la maggior parte dei casi d'uso, questo è sufficiente:
>>> a = numpy.array(['a', 'b', 'c', 'd', 'e'])
>>> b = numpy.arange(5)
>>> records = numpy.rec.fromarrays((a, b), names=('keys', 'data'))
>>> records
rec.array([('a', 0), ('b', 1), ('c', 2), ('d', 3), ('e', 4)],
dtype=[('keys', '|S1'), ('data', '<i8')])
>>> records['keys']
rec.array(['a', 'b', 'c', 'd', 'e'],
dtype='|S1')
>>> records['data']
array([0, 1, 2, 3, 4])
Nota che si può anche fare qualcosa di simile con una gamma di serie, specificando il tipo di dati l'array. Questo è noto come un "structured array":
>>> arr = numpy.array([('a', 0), ('b', 1)],
dtype=([('keys', '|S1'), ('data', 'i8')]))
>>> arr
array([('a', 0), ('b', 1)],
dtype=[('keys', '|S1'), ('data', '<i8')])
La differenza è che gli array di dischi permettono anche attribuire accesso ai singoli campi di dati. Gli array standard strutturati no.
>>> records.keys
chararray(['a', 'b', 'c', 'd', 'e'],
dtype='|S1')
>>> arr.keys
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'numpy.ndarray' object has no attribute 'keys'
La domanda è su come utilizzare una matrice NumPy. Tuttavia, se disporre di un array NumPy non è essenziale, un [Pandas DataFrame] (http://pandas.pydata.org/pandas-docs/stable/dsintro.html#dataframe) funzionerebbe bene per questa situazione. – crayzeewulf