如何多次将行插入到numpy数组?

时间:2018-08-22 15:23:10

标签: python arrays numpy

我有一个数组,需要检查它的行中是否缺少值。第二列必须遵循一个序列,如果发现缺失值,我需要将其插入。

[[123 1 0
  123 2 0
  123 4 0
  123 5 0
  123 8 0
  123 9 0
  ...]]

在此示例中,我需要在第2行插入值[123 3 0],在第4行插入[[123 6 0], [123 7 0]]

我正在逐行迭代数组,以检查是否缺少行,使用numpy.insert来完成,但是每次插入时它都会返回一个副本,从而增加了行应位于的索引每次执行此操作时插入。

这是一种合理的方法吗?

1 个答案:

答案 0 :(得分:0)

以这种方式查看而不使用插入:

import numpy as np
x = np.array([[123, 1, 0], 
              [123, 2, 0], 
              [123, 4, 0], 
              [123, 5, 0], 
              [123, 8, 0], 
              [123, 9, 0]])
y = np.zeros((x[-1, 1], x.shape[1]))
y[x[:,1] - 1] = x
indexes = np.where((y[:,0] == 0) & (y[:,1] == 0) & (y[:,2] == 0))[0]
y[indexes] = [[123, i + 1, 0] for i in indexes]

现在,

print(y)
[[123., 1., 0.]
 [123., 2., 0.]
 [123., 3., 0.]
 [123., 4., 0.]
 [123., 5., 0.]
 [123., 6., 0.]
 [123., 7., 0.]
 [123., 8., 0.]
 [123., 9., 0.]]

希望这可以为您提供帮助:)