首页 > 解决方案 > 如何将行多次插入到 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用于执行此操作,但每次插入完成时它都会返回一个副本,从而增加每次执行此操作时应插入行的索引。

这是一个合理的方法吗?

标签: pythonarraysnumpy

解决方案


不使用insert这样看:

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.]]

希望这可以帮到你 :)


推荐阅读