python numpy矩阵获取行列和合并分割

1. 引入numpy第三方库

首先我们引入numpy这个第三方库,如果有同学没安装numpy可在命令行中pip install numpy进行安装(Mac用户 sudo pip3 install numpy)

  • 测试采用python版本3.7.0 64bit
import numpy as np

2. array行列获取

import numpy as np
a=np.array([[ 2,  7,  4,  2],
       [35,  9,  1,  5],
       [22, 12,  3,  2]])
print(a[:, [0]]) ## 第0列
print(a[[1],:]) ## 第1行
  • 输出结果
[[ 2]
 [35]
 [22]]
[[35  9  1  5]]

3. array的合并

3.1. 垂直合并

A = np.array([1, 2, 3, 4])
B = np.array([2, 3, 4, 5])
print(np.vstack((A, B)))

3.2. 水平合并

print(np.hstack((A, B)))  #水平合并
C = np.array([7, 7, 7])[:, np.newaxis] # 纵向加一个维度,将array转为3行1列的矩阵
D = np.array([9, 9, 9])[:, np.newaxis]
E = np.concatenate((C, D, D, C), axis=1) # axis=1为水平合并, axis=0为垂直合并
print(E)

3.3. array的合并代码示例

import numpy as np
A = np.array([1, 2, 3, 4])
B = np.array([2, 3, 4, 5])
C = np.array([7, 7, 7])[:, np.newaxis] # 纵向加一个维度,将array转为3行1列的矩阵
D = np.array([9, 9, 9])[:, np.newaxis]
print('打印A与B:')
print(A)
print(B)
print(C)
print('\n垂直合并:')
print(np.vstack((A, B)))    #np.vstack需要输入tuple,需加()
print('\n水平合并:')
print(np.hstack((A, B)))
print('\n水平合并,axis=1 为水平合并 反之为垂直合并:')
E = np.concatenate((C,D,D,C),axis=1)
print(E)

F = np.array([A,B]).T  #翻转矩阵
print('打印翻转矩阵F:')
print(F)
  • 输出结果
打印A与B:
[1 2 3 4]
[2 3 4 5]
[[7]
 [7]
 [7]]

垂直合并:
[[1 2 3 4]
 [2 3 4 5]]

水平合并:
[1 2 3 4 2 3 4 5]

水平合并,axis=1 为水平合并 反之为垂直合并:
[[7 9 9 7]
 [7 9 9 7]
 [7 9 9 7]]
打印翻转矩阵F:
[[1 2]
 [2 3]
 [3 4]
 [4 5]]

4. 矩阵的分割

4.1. 水平分割

A = np.array(12).reshape((3, 4))
print(np.split(A, 2, axis=1)) # 表示对A进行分割,分为两块,axis=1为水平分割
print(np.hsplit(A, 2)) # 效果同上
print(np.array_split(A, 3, axis=1)) # 不均等分割

4.2. 垂直分割

print(np.split(A, 3, axis=0)) # 表示对A进行分割,分为3块,axis=0为垂直分割
print(np.vsplit(A, 3)) # 效果同上
print(np.array_split(A, 2, axis=0)) # 不均等分割

4.3. 矩阵分割代码示例

import numpy as np

G = np.arange(12).reshape((3,4))  #输出3行,4列
print('打印矩阵G:')
print(G)

print('\nG水平分割为2块:')
print(np.hsplit(G, 2))

print('\nG水平分割为两块:')
print(np.split(G, 2, axis=1)) # 表示对A进行分割,分为两块,axis=1为水平分割

print('\nG垂直分割为3块:')
print(np.vsplit(G, 3)) # 不均等分割

print('\nG垂直不均等分割:')
print(np.array_split(G, 2, axis=0))
  • 输出结果
打印矩阵G:
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

G水平分割为2块:
[array([[0, 1],
       [4, 5],
       [8, 9]]), array([[ 2,  3],
       [ 6,  7],
       [10, 11]])]

G水平分割为两块:
[array([[0, 1],
       [4, 5],
       [8, 9]]), array([[ 2,  3],
       [ 6,  7],
       [10, 11]])]

G垂直分割为3块:
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]

G垂直不均等分割:
[array([[0, 1, 2, 3],
       [4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]

发表评论

邮箱地址不会被公开。 必填项已用*标注