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

问题描述 投票:1回答:1

我有两个同样长的1D数组:“Number_of_Data”和“Value”。使用这两个数组,我想创建第三个数组(“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函数来实现这一目标? (实际上,我的数组当然比“Value”的长度长得多,并且最大数据量远远高于“Number_of_Data”中的最大值)

python-3.x
1个回答
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.]
© www.soinside.com 2019 - 2024. All rights reserved.