Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在numpy数组中多次插入行?_Python_Arrays_Numpy - Fatal编程技术网

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
调用。因为它每次调用都会生成一个新数组,所以在循环中重复调用它的成本相对较高。