Numpy数组从第二个数组中每隔一秒插入一个元素



我有两个形状相同的数组,现在想通过将第一个数组中的每个奇数元素和0以及第二个数组中每个偶数元素按相同的顺序进行组合。例如:

a = ([0,1,3,5])
b = ([2,4,6])
c = ([0,1,2,3,4,5,6])

我尝试了一些包括模的东西来识别不均匀的指数:

a = ([0,1,3,5])
b = ([2,4,6])
c = a
i = 0
j = 2
l = 0
for i in range(1,22):
k = (i+j) % 2
if k > 0:
c = np.insert(c, i, b[l])
l+=1
else: 
continue

我想有一些更容易/更快的切片选项,但无法解决。

np.insert会很好地工作:

>>> A = np.array([1, 3, 5, 7])
>>> B = np.array([2, 4, 6, 8])
>>> np.insert(B, np.arange(len(A)), A)
array([1, 2, 3, 4, 5, 6, 7, 8])

但是,如果您不依赖排序值,请尝试以下操作:

>>> A = np.array([5, 3, 1])
>>> B = np.array([1, 2, 3])
>>> C = [ ]
>>> for element in zip(A, B):
C.extend(element)
>>> C
[5, 1, 3, 2, 1, 3]

阅读范围的文档

for i in range(0,10,2):
print(i)

将打印[0,2,4,6,8]

据我所知,a中的第一个元素总是第一个,其余元素只是插入。如果是这样的话,那么巧妙地使用堆叠和重塑可能就足够了。

a = np.array([0,1,3,5])
b = np.array([2,4,6])
c = np.hstack([a[:1], np.vstack([a[1:], b]).T.reshape((-1, ))])

您可以尝试类似的

import numpy as np
A = [0,1,3,5]
B = [2,4,6]
lst = np.zeros(len(A)+len(B))
lst[0]=A[0]
lst[1::2] = A[1:]
lst[2::2] = B

尽管我不明白你为什么要把弄得这么复杂