Numpy矩阵中常用操作

(1)计算e的多少次方,以及一个数的开平方

B = np.arange(3)

print(np.exp(B))                   #结果为[1.         2.71828183 7.3890561 ]

print(np.sqrt(B))                   #结果为[0.         1.         1.41421356]

(2)把矩阵拉平与挤压

 a = np.floor(10*np.random.random((3,4)))          #先生成三行四列的数0到1之间的数,然后再扩大十倍向下取整。
结果为:
array([[1., 6., 4., 1.],
       [1., 9., 3., 7.],
       [5., 4., 6., 3.]])

拉平:

print(a.ravel())

结果为:[1. 6. 4. 1. 1. 9. 3. 7. 5. 4. 6. 3.]

挤压:

a = a.ravel()

a.shape = (6,2)

结果为:

[[1. 6.]
 [4. 1.]
 [1. 9.]
 [3. 7.]
 [5. 4.]
 [6. 3.]]

(3)转制

print(a.T)

(4)用-1代替多少行多少列,让电脑自己判断

如:

 print(a.reshape(3, -1))
[[1. 6. 4. 1.]
 [1. 9. 3. 7.]
 [5. 4. 6. 3.]]                        #写完三行电脑就知道3乘4等于12,自动填充4列

(5)拼接矩阵

a = np.floor(10*np.random.random((2,2)))

b = np.floor(10*np.random.random((2,2)))

按行拼接:print(np.hstack(a,b))

结果为:

[[4. 9. 9. 2.]
 [4. 0. 0. 3.]]

按列拼接:print(np.vstack(a,b))

结果为;

[[4. 9.]
 [4. 0.]
 [9. 2.]
 [0. 3.]]

(6)分割矩阵

a = np.floor(10*np.random.random((2, 12)))

对矩阵按行切割为均等长度的三段:print(np.hsplit(a, 3))

结果为:[array([[8., 2., 9., 7.],
                         [6., 9., 1., 9.]]),

                array([[9., 4., 2., 8.],
                         [6., 5., 9., 8.]]),

                array([[0., 4., 2., 1.],
                        [7., 1., 4., 7.]])]

对矩阵按行切割,指定切割位置,切割成长度不等的几段:print(np.hsplit(a, (3,4)))

结果为:

[array([[8., 2., 9.],
          [6., 9., 1.]]),

 array([[7.],
           [9.]]),

array([[9., 4., 2., 8., 0., 4., 2., 1.],
       [6., 5., 9., 8., 7., 1., 4., 7.]])]

按列分割也是同理:

 print(np.vsplit(a,2))

结果为:

[array([[8., 2., 9., 7., 9., 4., 2., 8., 0., 4., 2., 1.]]), array([[6., 9., 1., 9., 6., 5., 9., 8., 7., 1., 4., 7.]])]

猜你喜欢

转载自blog.csdn.net/qq_39112101/article/details/84978730
今日推荐