Python:按照另一个1D数组中的值提供的异构步骤扩展1D数组

时间:2018-07-13 13:23:28

标签: python-3.x

我有两个同样长的一维数组:“ Number_of_Data”和“ Value”。对于这两个数组,我想创建第三个数组(“ Final_Array”),其中“值”中的每个元素值出现的次数与“ 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函数来完成此任务? (实际上,我的数组当然比“ Value”的长度长得多,最大数据数比“ Number_of_Data”中的最大值高得多)。

1 个答案:

答案 0 :(得分:1)

我不知道任何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.]