gpt4 book ai didi

python - 将一个 NumPy 数组拆分为两个数组

转载 作者:太空狗 更新时间:2023-10-29 17:43:12 27 4
gpt4 key购买 nike

假设我有一个 NumPy 2D 数组 A:

>>> import numpy as np
>>> A=np.arange(30).reshape(3,10)
>>> A
array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
[20, 21, 22, 23, 24, 25, 26, 27, 28, 29]])

我需要得到两个数组 BC,它们具有以下属性:

B = array([[ 0,  3,  4,  5,  6,  7,  8,  9],
[10, 13, 14, 15, 16, 17, 18, 19],
[20, 23, 24, 25, 26, 27, 28, 29]])

C = array([[ 1, 2],
[11, 12],
[21, 22]])

完成此任务最简单的方法是什么?

请注意,我必须获取所有 C(2 个相邻列)和 B(即没有 C 的 A )。我尝试了不同的 NumPy 构造,例如 np.deletenp.hstack,但似乎没有像上例那样在角落条件下工作。

最佳答案

最简单的方法之一是使用索引来选择适当的列:

>>> A[:, [1, 2]] # choose all rows from columns 1-2 (gives C)
array([[ 1, 2],
[11, 12],
[21, 22]])

>>> A[:, np.r_[0, 3:10]] # choose all rows from columns 0, 3-9 (gives B)
array([[ 0, 3, 4, 5, 6, 7, 8, 9],
[10, 13, 14, 15, 16, 17, 18, 19],
[20, 23, 24, 25, 26, 27, 28, 29]])

或者,您可以尝试hsplit 分解A,然后将位连接在一起。不过,这感觉不如上面的索引方法有效:

>>> splits = np.hsplit(A, [1, 3]) 
>>> B = np.hstack((splits[0], splits[2]))
>>> C = splits[1]

关于python - 将一个 NumPy 数组拆分为两个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26571741/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com