我想以特定数量增加数组中每个元素的频率?
I want to increase the frequency of each element of an array with particular amount?
这是示例数组;
我希望它通过常数增加每个元素的频率(这里取 4);
[64,64,64,64,45,45,45,45,56,56,56,56,67,67,67,67,78,78,78,78 , 12, 12, 12, 12, 112, 112, 112, 112, 232, 232, 232, 232]
谁能帮我解决这个问题?请不要对其进行硬编码
您可以使用 np.repeat
来实现:
>>> a.repeat(4)
array([ 64, 64, 64, 64, 45, 45, 45, 45, 56, 56, 56, 56, 67,
67, 67, 67, 78, 78, 78, 78, 12, 12, 12, 12, 112, 112,
112, 112, 232, 232, 232, 232])
如果你在创建数组的时候知道展开的频率是多少,可以先用列表推导来展开:
import numpy as np
a_prime = [64, 45, 56, 67, 78, 12, 112, 232]
a = np.array([x for x in a for i in range(4)])
如果您需要更改数量以扩大它,您可以将其包装在一个函数中:
def expand_frequency(lst, n):
return [x for x in lst for i in range(n)]
a = np.array(expand_frequency(a_prime, 4))
我不确定这是否正是您要找的东西,但它应该作为一个起点。
这是示例数组;
我希望它通过常数增加每个元素的频率(这里取 4);
[64,64,64,64,45,45,45,45,56,56,56,56,67,67,67,67,78,78,78,78 , 12, 12, 12, 12, 112, 112, 112, 112, 232, 232, 232, 232]
谁能帮我解决这个问题?请不要对其进行硬编码
您可以使用 np.repeat
来实现:
>>> a.repeat(4)
array([ 64, 64, 64, 64, 45, 45, 45, 45, 56, 56, 56, 56, 67,
67, 67, 67, 78, 78, 78, 78, 12, 12, 12, 12, 112, 112,
112, 112, 232, 232, 232, 232])
如果你在创建数组的时候知道展开的频率是多少,可以先用列表推导来展开:
import numpy as np
a_prime = [64, 45, 56, 67, 78, 12, 112, 232]
a = np.array([x for x in a for i in range(4)])
如果您需要更改数量以扩大它,您可以将其包装在一个函数中:
def expand_frequency(lst, n):
return [x for x in lst for i in range(n)]
a = np.array(expand_frequency(a_prime, 4))
我不确定这是否正是您要找的东西,但它应该作为一个起点。