二进制numpy数组转整数列表?
我有一个二进制数组,我想把它转换成一个整数列表,每个整数代表数组的一行。
举个例子:
from numpy import *
a = array([[1, 1, 0, 0], [0, 1, 0, 0], [0, 1, 1, 1], [1, 1, 1, 1]])
我想把 a
转换成 [12, 4, 7, 15]
。
5 个回答
2
你也可以直接在numpy里面这样做:
from numpy import *
a = array([[1, 1, 0, 0], [0, 1, 0, 0], [0, 1, 1, 1], [1, 1, 1, 1]])
b2i = 2**arange(a.shape[0]-1, -1, -1)
result = (a*b2i).sum(axis=1) #[12 4 7 15]
36
SteveTjoa的回答很好,不过为了好玩,这里有一个用numpy写的一行代码:
In [19]: a
Out[19]:
array([[1, 1, 0, 0],
[0, 1, 0, 0],
[0, 1, 1, 1],
[1, 1, 1, 1]])
In [20]: a.dot(1 << arange(a.shape[-1] - 1, -1, -1))
Out[20]: array([12, 4, 7, 15])
(arange
指的是numpy.arange
.)
如果位的顺序相反,可以调整arange
生成的值的顺序:
In [25]: a.dot(1 << arange(a.shape[-1]))
Out[25]: array([ 3, 2, 14, 15])