我需要一个抽取,删除id=0,streams=v id=1,streams=a?
数组中n个中的m个的函数。例如,要删除1 in 2或删除2 in3。因此,数组为:
numpy
按1:2抽取将变为:
[7, 4, 3, 5, 9, 2, 4, 1, 6, 8]
我想知道是否有可能将数组从1d数组N长整形为2d和N / 2,2长然后减少多余的维数?
理想情况下,我不仅要转储抽取的样本,还想在每组值(在此示例对中)中找到最大值。例如:
[7, 3, 9, 4, 6]
有没有一种方法可以找到每个集合中的最大值,而不仅仅是丢弃它?
另一个挑战是,这里的重点是绘制值。
抽取是必需的,因为绘制每个值所花费的时间太长,这意味着我必须在绘制数组之前减小数组的大小,但我需要快速进行此操作。因此,[7, 5, 9, 4, 8]
或for
循环会花费太长时间。
答案 0 :(得分:1)
一种快速而肮脏的方法是
k,N = 3,18
a = np.random.randint(0,10,N) #[9, 6, 6, 6, 8, 4, 1, 4, 8, 1, 2, 6, 1, 8, 9, 8, 2, 8]
a = a[:-k:k] #[9, 6, 1, 1, 1]
无论 k 是否划分为 N,这都应该有效。
答案 1 :(得分:0)
找到最大值:
1)k除以N:
k,N = 3,18
a = np.random.randint(0,10,N)
a
# array([0, 6, 6, 3, 7, 0, 9, 2, 3, 2, 5, 4, 2, 6, 9, 6, 3, 2])
a.reshape(-1,k).max(1)
# array([6, 7, 9, 5, 9, 6])
2)k不除N:
k,N = 4,21
a = np.random.randint(0,10,N)
a
# array([4, 4, 6, 0, 0, 1, 7, 8, 2, 3, 0, 5, 7, 1, 1, 5, 7, 8, 3, 1, 7])
np.maximum.reduceat(a, np.arange(0,N,k))
# array([6, 8, 5, 7, 8, 7])
2)应该总是可以工作,但我怀疑1)适用时速度更快