如何在Python中将单例数组转换为标量值?

Dim*_*ims 15 python numpy multidimensional-array

假设我有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
Run Code Online (Sandbox Code Playgroud)

gtl*_*ert 26

你可以使用这个item()功能:

import numpy as np

matrix = np.array([[[[7]]]])
print(matrix.item())
Run Code Online (Sandbox Code Playgroud)

产量

7
Run Code Online (Sandbox Code Playgroud)


Tom*_*ale 12

Numpy有一个明确的功能:asscalar

>>> np.asscalar(np.array([24]))
24
Run Code Online (Sandbox Code Playgroud)

它使用item()实施.

我想asscalar更加明确地说明了发生了什么.

  • 请注意,尽管从numpy 1.16开始不推荐使用:https://docs.scipy.org/doc/numpy/reference/generation/numpy.asscalar.html (4认同)

Eri*_*ric 6

您可以在挤压后使用空元组进行索引:

x = np.array([[[1]]])
s = np.squeeze(x)  # or s = x.reshape(())
val = s[()]
print val, type(val)
Run Code Online (Sandbox Code Playgroud)