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