天天看點

Numpy之改變數組次元Numpy改變數組次元的常用方法

Numpy改變數組次元的常用方法

1.reshape

不會改變原始數組

[In] import numpy as np
	 b = np.arange(24)
	 b
[Out] 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])
[In] b.reshape(2,3,4)
[Out] 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]]])          	  
           

2.ravel

ravel用于将一個多元的數組展成一維數組,不會改變原始數組

[In] a = np.arange(6).reshape(2,3)
	 a
[Out] array([[0, 1, 2],
      	 	 [3, 4, 5]])
[In] a.ravel()
[Out] array([0, 1, 2, 3, 4, 5])
[In] a
[Out] array([[0, 1, 2],
      	 	 [3, 4, 5]])      	 	
           

3.flatten

flatten的作用和ravel一樣,不會改變原始數組

[In] a = np.arange(6).reshape(2,3)
	 a
[Out] array([[0, 1, 2],
      	 	 [3, 4, 5]])
[In] a.flatten()
[Out] array([0, 1, 2, 3, 4, 5])
[In] a
[Out] array([[0, 1, 2],
      	 	 [3, 4, 5]]) 
           

4.直接設定次元大小

會改變原始數組

[In] a = np.arange(6)
	 a
[Out] array([0, 1, 2,3, 4, 5])
[In] a.shape = (3,2)
	 a
[Out] array([[0, 1],
	         [2, 3],
     	     [4, 5]])
           

5.resize

resize和reshape使用方法一樣,但是resize是對原數組進行操作,而reshape并不改變原數組

[In] a = np.arange(6).reshape(2,3)
	 a
[Out] array([[0, 1, 2],
       	 	 [3, 4, 5]])
[In] a.resize(3,2)
	 a
[Out] array([[0, 1],
	         [2, 3],
     	     [4, 5]])