Sie könnten ein Array mit dtype = object
verwenden:
>>> arr = np.ndarray((10,4),dtype = object)
>>> arr[:,0] = int(10)
>>> arr[:,1:] = float(10)
>>> arr
array([[10, 10.0, 10.0, 10.0],
[10, 10.0, 10.0, 10.0],
[10, 10.0, 10.0, 10.0],
[10, 10.0, 10.0, 10.0],
[10, 10.0, 10.0, 10.0],
[10, 10.0, 10.0, 10.0],
[10, 10.0, 10.0, 10.0],
[10, 10.0, 10.0, 10.0],
[10, 10.0, 10.0, 10.0],
[10, 10.0, 10.0, 10.0]], dtype=object)
Beachten Sie, dass Sie das richtige Verhalten bekommen, wenn Arithmetik zu tun.
>>> arr/3
array([[3, 3.33333333333, 3.33333333333, 3.33333333333],
[3, 3.33333333333, 3.33333333333, 3.33333333333],
[3, 3.33333333333, 3.33333333333, 3.33333333333],
[3, 3.33333333333, 3.33333333333, 3.33333333333],
[3, 3.33333333333, 3.33333333333, 3.33333333333],
[3, 3.33333333333, 3.33333333333, 3.33333333333],
[3, 3.33333333333, 3.33333333333, 3.33333333333],
[3, 3.33333333333, 3.33333333333, 3.33333333333],
[3, 3.33333333333, 3.33333333333, 3.33333333333],
[3, 3.33333333333, 3.33333333333, 3.33333333333]], dtype=object)
Oder Sie könnten ein numpy.recarray
verwenden:
>>> import numpy as np
>>> arr = np.recarray(10,dtype=[('x',int),('y',float,4)])
>>> arr[:] = 0
>>> arr
rec.array([(0, array([ 0., 0., 0., 0.])), (0, array([ 0., 0., 0., 0.])),
(0, array([ 0., 0., 0., 0.])), (0, array([ 0., 0., 0., 0.])),
(0, array([ 0., 0., 0., 0.])), (0, array([ 0., 0., 0., 0.])),
(0, array([ 0., 0., 0., 0.])), (0, array([ 0., 0., 0., 0.])),
(0, array([ 0., 0., 0., 0.])), (0, array([ 0., 0., 0., 0.]))],
dtype=[('x', '<i4'), ('y', '<f8', (4,))])
>>> arr['x']
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
>>> arr['y']
array([[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])
Wenn Sie Arithmetik auf alle Werte tun müssen, werden Sie auf jedes Feld einzeln die Operation auszuführen, z.B.
>>> arr['x'] += 2
>>> arr['y'] += 2
Aus Neugier, warum sollten Sie das brauchen? – Rambatino
Stellen Sie sich vor, Sie müssen einige gemischte Daten speichern, wobei 1 Feld eine Ganzzahl ist (d. H. Ein diskretisierter Zustand) und die anderen real sind. – gluuke
Aber was machst du mit diesen Daten? Wann ist 1! = 1.0 problematisch? – Rambatino