Py学习  »  Python

Python,numpy如何基于每行中的值复制数组中的行

oaktree • 4 年前 • 1476 次点击  

我想要重复的行 numpy 基于每行中第一个项的数值的数组。因此,如果值为1,则该行不会重复,但如果值为3,则该行将被表示3次。我试着用 np.repeat np.tile 但我不知道他们是不是合适的工具,我还没想好是否有办法做到这一点。

下面是我随机生成的数组:

[[[3 1 3 1 2]
  [4 4 4 2 0]
  [3 4 4 4 0]
  [1 4 3 3 0]]

 [[4 2 0 2 1]
  [2 1 2 0 3]
  [4 1 3 4 3]
  [2 3 2 0 0]]]

我的目标是:

[[[3 1 3 1 2]
  [3 1 3 1 2]
  [3 1 3 1 2]
  [4 4 4 2 0]
  [4 4 4 2 0]
  [4 4 4 2 0]
  [4 4 4 2 0]
  [3 4 4 4 0]
  [3 4 4 4 0]
  [3 4 4 4 0]
  [1 4 3 3 0]]

 [[4 2 0 2 1]
  [4 2 0 2 1]
  [4 2 0 2 1]
  [4 2 0 2 1]
  [2 1 2 0 3]
  [2 1 2 0 3]
  [4 1 3 4 3]
  [4 1 3 4 3]
  [4 1 3 4 3]
  [4 1 3 4 3]
  [2 3 2 0 0]
  [2 3 2 0 0]]]

这是我目前掌握的密码

array = np.random.randint(5, size = (2, 4,5))

for a in array:
    for b in a:
        array = np.tile(a, (b[0],1))

如果我打印 b[0] ,我可以得到每个值。我想用这些值来复制每一行。

3
4
3
1
4
2
4
2

所以我想我可以循环遍历这些值,然后将每一行乘以相应的值来添加新行,但是我的结果一次只能重复第二个数组。

[[4 2 0 2 1]
 [2 1 2 0 3]
 [4 1 3 4 3]
 [2 3 2 0 0]
 [4 2 0 2 1]
 [2 1 2 0 3]
 [4 1 3 4 3]
 [2 3 2 0 0]]

我哪里做错了?我不应该用 np.瓷砖 ?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52494
 
1476 次点击  
文章 [ 2 ]  |  最新文章 4 年前