基于单独numpy中的值平铺2D numpy数组的行

2024-04-23 23:08:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个源数组:

a = array([[1, 1, 2, 2],
           [3, 4, 5, 6],
           [7, 7, 7, 8]])

以及一个向量,该向量指示要将数组的每行平铺多少次:

count = array([3, 1, 2])

我想得到:

results =array([[1, 1, 2, 2],
                [1, 1, 2, 2],
                [1, 1, 2, 2],
                [3, 4, 5, 6],
                [7, 7, 7, 8],
                [7, 7, 7, 8]]

有没有一个矢量化的方法来实现这一点?你知道吗

目前我使用的是迭代循环方法,当len(a)和/或count包含高值时,速度非常慢。你知道吗


Tags: 方法lencount数组array向量矢量化results
1条回答
网友
1楼 · 发布于 2024-04-23 23:08:11

^{}就是你想要的:

代码:

np.repeat(a, count, axis=0)

测试代码:

import numpy as np

a = np.array([[1, 1, 2, 2],
              [3, 4, 5, 6],
              [7, 7, 7, 8]])

count = np.array([3, 1, 2])

print(np.repeat(a, count, axis=0))

结果:

[[1 1 2 2]
 [1 1 2 2]
 [1 1 2 2]
 [3 4 5 6]
 [7 7 7 8]
 [7 7 7 8]]

相关问题 更多 >