如何将二进制 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
我的任务是将二进制数组转换为十进制数。 我的数组代码如下所示:
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