Python 如何在numpy数组中多次插入行?
我有一个数组,我需要检查它的行中是否缺少值。第二列必须遵循一个序列,如果发现缺少值,我需要插入它Python 如何在numpy数组中多次插入行?,python,arrays,numpy,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逐行迭代数组,检查是否有丢失的行,但每次插入时它都会返回一个副本,增加每次执行此操作时应插入行的索引 这是一种合理的方法吗?在不
[[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.]]
希望这能帮助您:)您能通过查看第一个和最后一个值来推断缺少多少值吗?然后您可以创建一次完整大小的数组并按顺序填充。正如@w-m所建议的那样,这会有点困难,只查看第一个和最后一个值,然后使用
range
以正确的大小构建该列。如果其他列中的数据发生变化,则必须决定如何在“插值”位置填充这些列。您能提供更多的上下文吗?在列表中插入多个项目时,一个常见的想法是从最大的索引开始,然后返回。这样,您就不必为增长调整索引。但适应增长并不难;这是一个简单的算术步骤。如果使用np.insert
,最好先收集所有插入、位置和值,然后只执行一个insert
调用。因为它每次调用都会生成一个新数组,所以在循环中重复调用它的成本相对较高。