# 導包 import numpy as np
numpy.array 的合並
.concatenate()
一維數組
x = np.array([1, 2, 3]) # array([1, 2, 3]) y = np.array([3, 2, 1]) # array([3, 2, 1])
np.concatenate([x, y]) # array([1, 2, 3, 3, 2, 1]) z = np.array([666, 666, 666]) # array([666, 666, 666]) np.concatenate([x, y, z]) """ array([ 1, 2, 3, 3, 2, 1, 666, 666, 666]) """
二維數組
.concatenate((a,b,c,...),axis=0) :默認情況下,axis=0可以不寫,axis是拼接方向,拼接方向可以理解為拼接完成后數量發生變化的方向,0為橫軸,1為縱軸
axis=0:對應列的數組進行拼接,拼接方向為橫軸,需要縱軸結構相同
axis=1:對應行的數組進行拼接,拼接方向為縱軸,需要橫軸結構相同
A = np.array([[1, 2, 3], [4, 5, 6]]) """ array([[1, 2, 3], [4, 5, 6]]) """ np.concatenate([A, A]) """ array([[1, 2, 3], [4, 5, 6], [1, 2, 3], [4, 5, 6]]) """ np.concatenate([A, A], axis=1) """ array([[1, 2, 3, 1, 2, 3], [4, 5, 6, 4, 5, 6]]) """ np.concatenate([A, z]) # 錯誤 np.concatenate([A, z.reshape(1, -1)]) """ array([[ 1, 2, 3], [ 4, 5, 6], [666, 666, 666]]) """
.hstack()
函數原型:numpy.hstack(tup) ,參數tup可以是元組,列表,或者numpy數組,陣列必須具有相同的形狀,除了對應於軸的維度(默認情況下,第一個),返回結果為numpy的數組
等價於
numpy.concatenate(tup,axis=1)
a=[1,2,3] b=[4,5,6] np.hstack((a,b)) # array([1, 2, 3, 4, 5, 6])
a=[[1],[2],[3]] b=[[1],[2],[3]] c=[[1],[2],[3]] d=[[1],[2],[3]] np.hstack((a,b,c,d)) """ array([[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3]]) """
它其實就是水平(按列順序)把數組給堆疊起來
.vstack()
函數原型:numpy.vstack(tup) ,參數tup可以是元組,列表,或者numpy數組,返回結果為numpy的數組
等價於:
np.concatenate(tup,axis=0)
a=[1,2,3] b=[4,5,6] np.vstack((a,b)) """ array([[1, 2, 3], [4, 5, 6]]) """
a=[[1],[2],[3]] b=[[1],[2],[3]] c=[[1],[2],[3]] d=[[1],[2],[3]] np.vstack((a,b,c,d)) """ array([[1], [2], [3], [1], [2], [3], [1], [2], [3], [1], [2], [3]]) """
它是垂直(按照行順序)的把數組給堆疊起來
numpy.array 的分割
split
split(ary, indices_or_sections, axis=0):把一個數組從左到右按順序切分
ary:要切分的數組
indices_or_sections:如果是一個整數,就用該數平均切分,如果是一個數組,為沿軸切分的位置(左閉右開)
axis:沿着哪個維度進行切向,默認為0,橫向切分;為1時,縱向切分
x = np.arange(10) # array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) x1, x2, x3, x4, x5 = np.split(x, [2, 4, 5, 7]) """ x1 --> array([0, 1]) x2 --> array([2, 3]) x3 --> array([4]) x4 --> array([5, 6]) x5 --> array([7, 8, 9]) """
A = np.arange(16).reshape(4, 4) A1, A2 = np.split(A, [2]) """ A1 --> array([[0, 1, 2, 3], [4, 5, 6, 7]]) A2 --> array([[ 8, 9, 10, 11], [12, 13, 14, 15]]) """ A1, A2 = np.split(A, [2], axis=1) """ A1 --> array([[ 0, 1], [ 4, 5], [ 8, 9], [12, 13]]) A2 --> array([[ 2, 3], [ 6, 7], [10, 11], [14, 15]]) """
hsplit
通過指定要返回的相同shape的array的數量,類似於axis = 1
vsplit
vsplit沿着垂直軸分割,類似於axis = 0
upper, lower = np.vsplit(A, [2]) """ upper --> array([[0, 1, 2, 3], [4, 5, 6, 7]]) """ left, right = np.hsplit(A, [2]) """ left --> array([[ 0, 1], [ 4, 5], [ 8, 9], [12, 13]]) """