numpy 如何在Python中将singleton数组转换为标量值?

ix0qys7i  于 2023-04-30  发布在  Python
关注(0)|答案(6)|浏览(155)

假设我有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
ogsagwnx

ogsagwnx1#

您可以使用item()函数:

import numpy as np

matrix = np.array([[[[7]]]])
print(matrix.item())

输出

7
3gtaxfhh

3gtaxfhh2#

Numpy有一个明确用于此目的的函数:asscalar

>>> np.asscalar(np.array([24]))
24

这在实现中使用了item()
我猜asscalar是为了更明确地说明正在发生的事情。

更新:

截至2023年,该函数已从NumPy中删除(参见v1.23 release notes)。

58wvjzkj

58wvjzkj3#

你可以在压缩后使用空元组索引:

x = np.array([[[1]]])
s = np.squeeze(x)  # or s = x.reshape(())
val = s[()]
print val, type(val)
n7taea2i

n7taea2i4#

可以使用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
wlp8pajw

wlp8pajw5#

>>> float(np.array([[[[1]]]]))
1.
g2ieeal7

g2ieeal76#

你可以使用numpy。flat()函数将数组展平为一维数组。例如:

s = [[1]]
print(s[0][0])
>>>> 1

a=[[1],[2]]
print(a[0][0])
>>>> 1
print(a[1][0])
>>>> 2

相关问题