簡體   English   中英

Numpy 數組插入第二個數組中的每個第二個元素

[英]Numpy array insert every second element from second array

我有兩個相同形狀的 arrays,現在想通過以相同的順序將第一個數組中的每個奇數元素和 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 中的第一個元素始終是第一個 rest 只是交織在一起。 如果是這種情況,那么巧妙地使用堆疊和重塑可能就足夠了。

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

雖然我不明白你為什么要把它搞得這么復雜

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM