How to convert singleton array to a scalar value in Python?
Question:
Suppose I have 1x1x1x1x… array and wish to convert it to scalar?
How do I do it?
squeeze
does not help.
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
Answers:
You can use the item()
function:
import numpy as np
matrix = np.array([[[[7]]]])
print(matrix.item())
Output
7
You can use np.take
–
np.take(matrix,0)
Sample run –
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
You can index with the empty tuple after squeezing:
x = np.array([[[1]]])
s = np.squeeze(x) # or s = x.reshape(())
val = s[()]
print val, type(val)
Numpy has a function explicitly for this purpose: asscalar
>>> np.asscalar(np.array([24]))
24
This uses item()
in the implementation.
I guess asscalar
was added to more explicit about what’s going on.
>>> float(np.array([[[[1]]]]))
1.
You can use the numpy.flatten() function to flatten the array to a one dimensional array.
For instance:
s = [[1]]
print(s[0][0])
>>>> 1
or
a=[[1],[2]]
print(a[0][0])
>>>> 1
print(a[1][0])
>>>> 2
Suppose I have 1x1x1x1x… array and wish to convert it to scalar?
How do I do it?
squeeze
does not help.
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
You can use the item()
function:
import numpy as np
matrix = np.array([[[[7]]]])
print(matrix.item())
Output
7
You can use np.take
–
np.take(matrix,0)
Sample run –
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
You can index with the empty tuple after squeezing:
x = np.array([[[1]]])
s = np.squeeze(x) # or s = x.reshape(())
val = s[()]
print val, type(val)
Numpy has a function explicitly for this purpose: asscalar
>>> np.asscalar(np.array([24]))
24
This uses item()
in the implementation.
I guess asscalar
was added to more explicit about what’s going on.
>>> float(np.array([[[[1]]]]))
1.
You can use the numpy.flatten() function to flatten the array to a one dimensional array.
For instance:
s = [[1]]
print(s[0][0])
>>>> 1
or
a=[[1],[2]]
print(a[0][0])
>>>> 1
print(a[1][0])
>>>> 2