Как преобразовать одноэлементный массив в скалярное значение в Python?
Предположим, у меня есть 1x1x1x1x... массив и хотите преобразовать его в скаляр?
Как мне это сделать?
squeeze
не помогает.
import numpy as np
matrix = np.array([[1]])
s = np.squeeze(matrix)
print type(s)
print s
matrix = [[1]]
print type(s)
print s
s = 1
print type(s)
print s
4 ответов
можно использовать item()
функция:
import numpy as np
matrix = np.array([[[[7]]]])
print(matrix.item())
выход
7
вы можете индексировать пустой кортеж после сжатия:
x = np.array([[[1]]])
s = np.squeeze(x) # or s = x.reshape(())
val = s[()]
print val, type(val)
Numpy имеет функцию явно для этой цели:asscalar
>>> np.asscalar(np.array([24]))
24
использует item()
на реализация.
Я думаю asscalar
был добавлен более явный о том, что происходит.
можно использовать np.take
-
np.take(matrix,0)
образец выполнения -
In [15]: matrix = np.array([[67]])
In [16]: np.take(matrix,0)
Out[16]: 67
In [17]: type(np.take(matrix,0))
Out[17]: numpy.int64