簡體   English   中英

如何將numpy數組拆分為python中單獨的arrays。拆分數量由用戶給出,拆分基於索引

[英]How to split the numpy array into separate arrays in python. The number is splits is given by the user and the splitting is based on index

我想將我的 numpy 數組拆分成單獨的 arrays。分隔必須基於索引。 拆分計數由用戶給出。

例如,輸入數組: my_array=[1,2,3,4,5,6,7,8,9,10]

如果用戶給出拆分計數 =2,則拆分必須像

my_array1=[1,3,5,7,9]
my_array2=[2,4,6,8,10]

如果用戶給出 split count=3,則 output 數組必須是

my_array1=[1,4,7,10]
my_array2=[2,5,8]
my_array3=[3,6,9]

任何人都可以解釋一下,我使用偶數概念為拆分計數 2 做了

for i in range(len(outputarray)):
    if i%2==0:
        even_array.append(outputarray[i])  
    else:
        odd_array.append(outputarray[i])

我不知道如何根據索引對 3、4、5 等變量計數進行拆分。

這是完成任務的僅限 python 的方法

def split_array(array, n=3):
    arrays = [[] for _ in range(n)]
    for x in range(n):
        for i in range(n):
            arrays[i] = [array[x] for x in range(len(array)) if x%n==i]
    return arrays

輸入:

my_array=[1,2,3,4,5,6,7,8,9,10]
print(split_array(my_array, n=3))

Output:

[[1, 4, 7, 10], [2, 5, 8], [3, 6, 9]]

您可以為其使用按向量索引(又名花式索引):

>>> a=np.array([1,2,3,4,5,6,7,8,9,10])
>>> n = 3
>>> [a[np.arange(i, len(a), n)] for i in range(n)]

[array([ 1,  4,  7, 10]), array([2, 5, 8]), array([3, 6, 9])]

解釋

arange(i, len(a), n)生成一個以i開頭的整數數組,跨度不超過len(a) ,步長n 例如,對於i = 0 ,它生成一個數組

 >>> np.arange(0, 10, 3)
 array([0, 3, 6, 9])

現在,當您使用另一個數組索引一個數組時,您會在請求的索引處獲得元素:

 >>> a[[0, 3, 6, 9]]
 array([ 1,  4,  7, 10])

對 i=1..2 重復這些步驟,得到所需的列表 arrays。

暫無
暫無

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

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