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]])