我有两个同样长的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”中的最大值)
我不知道任何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.]