Python numpy如何从数组中连接数字
我是Python的新手。我想我在找容易的东西,但找不到。 我有一个numpy二进制数组,例如:Python numpy如何从数组中连接数字,python,arrays,numpy,Python,Arrays,Numpy,我是Python的新手。我想我在找容易的东西,但找不到。 我有一个numpy二进制数组,例如: [1,0,1,1,0,0,0,1,1,1,1,0] 我想做两件事: 将(?)所有元素合并为一个数字,结果将是: x=101100011110 接下来,我们要将其转换为二进制,因此: xx=2846 我有一个算法要做2,但我不知道如何做1。我可以用loop来做,但是可以不用loop用numpy来做吗?我的阵列将是巨大的,所以我需要最好的选择 >>> int(''.join(
[1,0,1,1,0,0,0,1,1,1,1,0]
我想做两件事:
x=101100011110
xx=2846
>>> int(''.join(map(str, [1,0,1,1,0,0,0,1,1,1,1,0])))
101100011110
或者用一点小屁股:
>>> int(''.join(np.array([1,0,1,1,0,0,0,1,1,1,1,0]).astype('|S1')))
101100011110
我喜欢@timgeb的答案,但如果您确定要直接使用numpy计算,可以这样做:
x = np.array([1,0,1,1,0,0,0,1,1,1,1,0])
exponents = np.arange(len(x))[::-1]
powers = 10**exponents
result = sum(powers * x)
In [12]: result
Out[12]: 101100011110
正如@Magellan88在评论中指出的,如果你设置
powers=2**exponents
,你可以在一次扫描中从0到问题的第二部分。既然你不想在第一个任务中循环,那么你可以使用map方法,我只是想说明你也可以尝试以下方法:
import numpy as np
array=np.array([1,0,1,1,0,0,0,1,1,1,1,0])
int_con=str(array).replace(',','').replace(' ','').replace('[','').replace(']','')
print("Joined {}".format(int_con))
bin_to_de=0
for digit in int_con:
bin_to_de=bin_to_de*2+int(digit)
print("Decimal conversion {}".format(bin_to_de))
输出:
Joined 101100011110
Decimal conversion 2846
幂应该是2**个指数,但除此之外,我同意如果你想从初始数组直接得到二进制的话。这是一个很好的观点!我在答案上加了一条注释。我找到了你的一个旧答案,目的是为了避开“我爱你的头像”这一离题评论。