ndarray的拼接 分割及淺拷貝 深拷貝

2022-06-29 21:39:11 字數 1686 閱讀 4941

#

拼接、分割array陣列

defexample1():

#新建兩個二維 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))

#

淺拷貝、深拷貝

defexample2():

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)

ndarray 的常用屬性及函式

型別 型別 說明int8 uint8 i1 u1 有符號和無符號8位整型 1位元組 int16 uint16 i2 u2 有符號和無符號16位整型 2位元組 int32 uint32 i4 u4 有符號和無符號32位整型 4位元組 int64 uint64 i8 u8 有符號和無符號64位整型 8位...

字串的拼接分割

string s1 s1 string s2 s2 string s3 s1 s2 string s4 wahaha cout 分割字串 c 中string類並沒有提供split函式分割.參考他人c split 函式的實現 如果是切分檔名 c windows aaa.txt 獲得aaa.txt 通過...

js 淺拷貝直接賦值 js的賦值與淺拷貝 深拷貝

昨天翻了下陣列api,看到concat和slice方法,突然想到這個兩個方法是淺拷貝還是深拷貝,結果陷入了死胡同,為什麼mdn文件說是淺拷貝,但進行簡單的操作為什麼能複製成功啊,糾結半天後才弄清原由,原來我一直把賦值和深淺拷貝搞混了。首先不要把引用型別的賦值歸結為淺拷貝,深拷貝和淺拷貝只針對像 ob...