- ndarray拼接concatenate()、分割split()、array_split()
- concatenate( ([], [], ...), axis=n )
- split( 數組,切割點,axis=n ), 其中切割點可以多處,split必須平均長度切割
- array_split( 數組,切割點,axis=n ),其中切割點可以多處,無需平均長度
# 拼接、分割array數組
def example1(): # 新建兩個二維 1*3 的數組
arr1 = np.array([[1, 3, 2]]) arr2 = np.array([[6, 6, 6]]) # concatenate((array1, array2, ...), axis=n)
# 合並array數組可合並多個 axis:合並的維度方向
# [ [1 3 2 6 6 6]
print(np.concatenate((arr1, arr2), axis=1)) # [ [1 3 2]
# [6 6 6] ]
print(np.concatenate((arr1, arr2), axis=0)) # arr3 = np.array([
# [1, 3, 2],
# [6, 6, 6]
# ])
arr3 = np.concatenate((arr1, arr2), axis=0) # split(數組, 分割數量, 軸方向),分割等長數組
# [array([[1, 3, 2]]), array([[6, 6, 6]])]
print(np.split(arr3, 2, axis=0)) # 在索引1、2處分別切一刀分割,分割成三部分,第0列,第1列,第2列
# [ array([[1],[6]]),
# array([[3],[6]]),
# array([[2],[6]]) ]
print(np.split(arr3, [1, 2], axis=1)) # split(數組, 分割數量, 軸方向),可分割等長與不等長數組
# [ array([[1, 3],[6, 6]]),
# array([[2],[6]]) ]
print(np.array_split(arr3, 2, axis=1))
- 淺拷貝、深拷貝
- 淺拷貝,指向同一個地址,共用相同空間, arr1 --> 空間 <-- arr2
- 深拷貝,指向不同地址,使用不同空間, arr1 --> 空間1 空間2 <-- arr2
# 淺拷貝、深拷貝
def example2(): arr1 = np.array([ [1, 2, 3], [4, 5, 6] ]) # 淺拷貝 arr1 --> 空間 <-- arr2
# arr1、arr2指向同一個地址的內容
arr2 = arr1 # 改變arr2時候,arr1的內容也改變,是同一個內容
arr2[0][1] = 9
# arr1: [[1 9 3] arr2: [[1 9 3]
# [4 5 6]] [4 5 6]]
# True
print("arr1 is arr2:", arr1 is arr2) # 深拷貝 arr1 --> 空間1 空間2 <-- arr2
# arr1、arr3指向地址不同,僅僅元素內容相同
arr3 = arr1.copy() # 改變arr3時候,arr1的內容不改變,不是同一個內容
arr3[0][0] = 10
# arr1: [[1 9 3] arr3: [[10 9 3]
# [4 5 6]] [4 5 6]]
# False
print("arr1 is arr3:", arr1 is arr3)
