Ответ 1
Используйте .astype
.
>>> a = numpy.array([1, 2, 3, 4], dtype=numpy.float64)
>>> a
array([ 1., 2., 3., 4.])
>>> a.astype(numpy.int64)
array([1, 2, 3, 4])
Дополнительную информацию см. в документации.
У меня есть ndarray
в python с dtype
из float64
. Я хотел бы преобразовать массив в массив целых чисел. Как мне это сделать?
int()
не будет работать, поскольку он говорит, что не может преобразовать его в скаляр. Изменение самого поля dtype
, очевидно, не работает, так как фактические байты не изменились. Кажется, я ничего не могу найти в Google или в документации - какой лучший способ сделать это?
Используйте .astype
.
>>> a = numpy.array([1, 2, 3, 4], dtype=numpy.float64)
>>> a
array([ 1., 2., 3., 4.])
>>> a.astype(numpy.int64)
array([1, 2, 3, 4])
Дополнительную информацию см. в документации.
Там также очень полезная дискуссия о преобразовании массива на место, Преобразование типа места в массиве NumPy. Если вы беспокоитесь о копировании своего массива (это то, что делает astype()
), обязательно проверьте ссылку.
Хотя astype
, вероятно, является "лучшим" вариантом, существует несколько других способов преобразования его в целочисленный массив. Я использую этот arr
в следующих примерах:
>>> import numpy as np
>>> arr = np.array([1,2,3,4], dtype=float)
>>> arr
array([ 1., 2., 3., 4.])
int*
из NumPy>>> np.int64(arr)
array([1, 2, 3, 4])
>>> np.int_(arr)
array([1, 2, 3, 4])
*array
сами:>>> np.array(arr, dtype=int)
array([1, 2, 3, 4])
>>> np.asarray(arr, dtype=int)
array([1, 2, 3, 4])
>>> np.asanyarray(arr, dtype=int)
array([1, 2, 3, 4])
astype
(который уже упоминался, но для полноты):>>> arr.astype(int)
array([1, 2, 3, 4])
Обратите внимание, что передача int
, поскольку dtype to astype
или array
будет по умолчанию использовать целочисленный тип по умолчанию, который зависит от вашей платформы. Например, в Windows это будет int32
, на 64-битном Linux с 64-битным Python оно int64
. Если вам нужен определенный целочисленный тип и вы хотите избежать "двусмысленности" платформы, вы должны использовать соответствующие типы NumPy, такие как np.int32
или np.int64
.