Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python numpy如何从数组中连接数字_Python_Arrays_Numpy - Fatal编程技术网

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(

我是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(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**个指数,但除此之外,我同意如果你想从初始数组直接得到二进制的话。这是一个很好的观点!我在答案上加了一条注释。我找到了你的一个旧答案,目的是为了避开“我爱你的头像”这一离题评论。