简体   繁体   English

Python将数组拆分为更小的数组

[英]Python split array into smaller arrays

I am trying to split a numpy array named K into three different numpy arrays Kff, Kpp and Kpf.我试图将一个名为 K 的 numpy 数组拆分为三个不同的 numpy 数组 Kff、Kpp 和 Kpf。 I have attached an image of how they need to be split up here: https://i.imgur.com/kbJnljf.png我在此处附上了一张他们需要如何拆分的图片: https ://i.imgur.com/kbJnljf.png

For example to set up Kff I need the following entries from K:例如,要设置 Kff,我需要来自 K 的以下条目:

  • i = 2, 3, 4, 5 and 7 i = 2、3、4、5 和 7
  • j = 2, 3, 4, 5 and 7 j = 2、3、4、5 和 7

I am completely lost at to how I can do this in a quick and efficient manner.我完全不知道如何以快速有效的方式做到这一点。 Eventually I will have to do something similiar for a 24x24 array.最终我将不得不为 24x24 阵列做一些类似的事情。

import numpy as np

k = np.arange(1, 65).reshape(8, 8)
rows = [True, True, False, False, False, False, True, False]
cols = [True, True, False, False, False, False, True, False]
notRows = [not x for x in rows]
notCols = [not x for x in cols]
k_pp = k[rows, :][:, cols]
k_ff = k[notRows, :][:, notCols]
k_pf = k[rows, :][:, notCols]

print(f"{k=}\n{k_pp=}\n{k_ff=}\n{k_pf=}")

outputs输出

k=array([[ 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, 30, 31, 32],
         [33, 34, 35, 36, 37, 38, 39, 40],
         [41, 42, 43, 44, 45, 46, 47, 48],
         [49, 50, 51, 52, 53, 54, 55, 56],
         [57, 58, 59, 60, 61, 62, 63, 64]])
k_pp=array([[ 1,  2,  7],
            [ 9, 10, 15],
            [49, 50, 55]])
k_ff=array([[19, 20, 21, 22, 24],
            [27, 28, 29, 30, 32],
            [35, 36, 37, 38, 40],
            [43, 44, 45, 46, 48],
            [59, 60, 61, 62, 64]])
k_pf=array([[ 3,  4,  5,  6,  8],
            [11, 12, 13, 14, 16],
            [51, 52, 53, 54, 56]])

more synthetically:更综合地:

import numpy as np

k = np.arange(1, 65).reshape(8, 8)
rows = np.array([True, True, False, False, False, False, True, False])
cols = np.array([True, True, False, False, False, False, True, False])
k_pp = k[rows, :][:, cols]
k_ff = k[~rows, :][:, ~cols]
k_pf = k[rows, :][:, ~cols]

print(f"{k=}\n{k_pp=}\n{k_ff=}\n{k_pf=}")

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM