我有两个同样长的一维数组:“ 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”中的最大值高得多)。
答案 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.]