python - 如何将行多次插入到 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
用于执行此操作,但每次插入完成时它都会返回一个副本,从而增加每次执行此操作时应插入行的索引。
这是一个合理的方法吗?
解决方案
不使用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.]]
希望这可以帮到你 :)
推荐阅读
- azure-active-directory - 在 AAD OAuth 身份验证期间提示单个用户进行管理员批准
- java - for(String string : myWord) 的另一种写法
- java - NumberFormatException: Invalid int 即使它真的是一个整数
- c++ - 为什么在这种情况下递增数组名称有效?
- python - Pytorch,如何将 CNN 的输出输入到 RNN 的输入中?
- android - 如何通过routing.openstreetmap.de在两点之间获得多条路线?
- python - 大规模矩阵路由——缺少令牌/API 密钥错误
- eclipse - printf 不在 Eclipse 的控制台上打印
- eos - 使用 RPC 的 EOS 交易
- javascript - 在 Javascript 中单击时从按钮的动态 ID 中获取值