如何在 python 中将 numpy 数组拆分为单独的数组。分割数由用户指定,分割基于索引

发布于 2025-01-10 08:30:06 字数 571 浏览 0 评论 0原文

我想将我的 numpy 数组拆分为单独的数组。分离必须基于索引。分割计数由用户给出。

例如, 输入数组: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]

如果用户给出分割计数=3,那么 输出数组必须是

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)进行拆分。

I want to split my numpy array into separate arrays. The separation must be based on the index. The split count is given by the user.

For example,
The input array: my_array=[1,2,3,4,5,6,7,8,9,10]

If user gives split count =2,
then, the split must be like

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

if user gives split count=3, then
the output array must be

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

could anyone please explain, I did for split count 2 using even odd concept

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

I don't know how to do the split for variable counts like 3,4,5 based on the index.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

神仙妹妹 2025-01-17 08:30:06

您可以使用矢量索引(又名 花式索引) 对于它:

>>> 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 重复这些步骤,结果是所需的数组列表。

You can use indexing by vector (aka fancy indexing) for it:

>>> 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])]

Explanation

arange(i, len(a), n) generates an array of integers starting with i, spanning no longer than len(a) with step n. For example, for i = 0 it generates an array

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

Now when you index an array with another array, you get the elements at the requested indices:

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

These steps are repeated for i=1..2 resulting in the desired list of arrays.

春庭雪 2025-01-17 08:30:06

这是执行任务的仅 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))

输出:

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

Here is a python-only way of doing your task

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

Input:

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]]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文