代码之家  ›  专栏  ›  技术社区  ›  kirerik

python:以其他1d数组中的值提供的异构步骤扩展1d数组

  •  1
  • kirerik  · 技术社区  · 7 年前

    我有两个同样长的一维数组:“数据的数量”和“值”。对于这两个数组,我想创建第三个数组(“final_array”),其中“value”中的每个元素值出现的次数与“number_of_data”中相应元素值指定的次数相同。

    我举个例子:

    import numpy as np
    # Create the Arrays
    Number_of_Data = np.asarray([2, 4, 1, 2, 3, 6, 3])
    Value = np.arange(0, 7, 1)
    
    # Then, somehow, I want Final_Array to be:
    Final_Array 
    array([0, 0, 1, 1, 1, 1, 2, 3, 3, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6])
    

    有一个python函数来完成这个任务吗?(实际上,我的数组当然比“值”的长度要长得多,并且数据的最大数量远高于“数字数据”中的最高值。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Matteo    7 年前

    我不知道任何numpy集成功能。最简单的方法是创建一个简单的函数,该函数接受两个数组,并利用两个for循环返回所需的向量。

    import numpy as np
    
    
    def final(numbers, values):
        n_values = len(values)
        vector = np.zeros(np.sum(numbers))
        counter = 0
        for k in range(n_values):
            for j in range(numbers[k]):
                vector[counter] = values[k]
                counter += 1
        return vector
    
    
    Number_of_Data = np.asarray([2, 4, 1, 2, 3, 6, 3])
    Value = np.arange(0, 7, 1)
    
    Final_Array = final(Number_of_Data, Value)
    print(Final_Array)
    

    这是回馈

    [ 0.  0.  1.  1.  1.  1.  2.  3.  3.  4.  4.  4.  5.  5.  5.  5.  5.  5.  6.  6.  6.]