применение .astype () для указанных c индексов не работает - PullRequest
0 голосов
/ 23 января 2020

Я хочу изменить первый столбец на int в dnarray

print(gcp)

[[1. 6.218 2.974 0.] [2. 32.881 8.66 0.] [3.
38.94 35.843 0.] [4. 8.52 35.679 0.] [5. 52.902 49.538 0.]]

print(gcp.dtype)

float64

gcp[:,0] = (gcp[:,0]).astype(int)
print(((gcp[:,0]).astype(int)).dtype)

int32

print(gcp.dtype)

float64

Я пытался использовать глубокую копию, но безуспешно. Любая помощь будет хорошей, я не нашел подобных вопросов.

1 Ответ

1 голос
/ 23 января 2020

Для элемента index of the row(+1) в качестве массива мне кажется избыточным, может быть, вам вообще не нужен первый ряд. В противном случае лучший вариант для меня - использовать два массива:

gcp0 = gcp[:, 0].astype(int)
gcp = gcp[:, 1:]

Другая возможность - определить отдельные named fields с соответствующими dtypes для отдельных столбцов, что приближает вас к pandas, что еще один вариант у вас есть.

gcp = np.array([(1., 6.218,  2.974,  0.),
                (2., 32.881, 8.66,   0.),
                (3., 38.94,  35.843, 0.),
                (4., 8.52,   35.679, 0.),
                (5., 52.902, 49.538, 0.)],
                dtype={'names':   ['index', 'a0', 'a1', 'a2'],
                       'formats': [int, float, float, float]})

print(gcp['index'])
# [1 2 3 4 5]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...