如何将二进制 numpy 数组更改为 int?

How to change a binary numpy array into an int?

我的任务是将二进制数组转换为十进制数。 我的数组代码如下所示:

koo = np.random.randint(2, size=10)
print(koo)

输出示例为:

[1 0 1 0 0 0 0 0 1 0]

而我应该做的是将它变成一个字符串 (1010000010),然后再将它变成一个十进制数 (642)。有什么方法可以做到这一点?

对于这个任务,我必须用数组创建它,我不能使用 np.binary_repr()

我已经尝试使用 here 提供的解决方案来解决它,但是在处理它时,数字会与真实情况大不相同(即:根据程序,1011111010 是 381,而实际上是 762 )

有人知道怎么解决这个问题吗?提前致谢!

你可以使用列表理解从头到尾枚举数字,然后计算以十为底的数字,然后求和。例如:

np.sum([digit * 2 ** i for i, digit in enumerate(koo[::-1])])

>>> koo = np.random.randint(2, size=10)
>>> koo
array([1, 1, 0, 0, 0, 0, 1, 1, 1, 1])

>>> binary_string =  ''.join(koo.astype('str').tolist())
>>> binary_string
'1100001111'

>>> binary_val = int('1100001111', 2)
>>> binary_val
783

首先,通过简单地附加元素将Numpy数组转换为字符串。 然后,使用 int(),使用 2.

的基重写字符串
koo = np.random.randint(2, size=10)
print(koo)
binaryString = ""
for digit in koo:
    binaryString += str(digit)
print(binaryString)
decimalString = int(binaryString, base=2)
print(decimalString)

一个例子运行:

[0 0 1 0 1 0 0 0 0 0]
0010100000
160