如何从任何列索引垂直拆分numpy数组

2024-06-26 18:01:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将一个numpy数组拆分为两个子数组,其中拆分点基于列id,即垂直拆分。例如,如果我生成一个numpy数组shape[10,16],并且我想通过将它从列的索引11拆分来创建两个子数组,那么我应该得到一个大小为[10,10]的子数组,另一个来自[10,15]。因此,我遵循numpy.hsplithere,但它似乎只进行偶数拆分(子数组必须相等)。我希望能够:

  1. 垂直拆分任何numpy数组,不管子数组的大小。在
  2. 提取两个子阵列。在

为了模拟我的请求,下面是我的代码:

import numpy as np
C = [[1,2,3,4],[5,6,7,8],[9,10,11,12], [13,14,15,16]]
C = np.asarray(C)
C = np.hsplit(C, 3)
print(C)

如您所见,np.hsplit(C, 3)不起作用,除非拆分生成类似的子数组。即使我做了np.hsplit(C, 2),我也不知道如何将两个子数组提取到单独的numy数组中。在

为了实现我的目标,如何修改此代码?在


Tags: 代码importnumpyid目标asnp数组
2条回答

您需要将索引指定为列表:

import numpy as np

C = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]
C = np.asarray(C)

C = np.hsplit(C, [3])

print(C)

输出

^{pr2}$

使用数组索引。在

C[:,:3]  # All rows , columns 0 to 2
Out[29]: 
array([[ 1,  2,  3],
       [ 5,  6,  7],
       [ 9, 10, 11],
       [13, 14, 15]])

C[:,3:]  # All rows column 3 (to end in this case also 3).
Out[30]: 
array([[ 4],
       [ 8],
       [12],
       [16]])

相关问题 更多 >