numpy陣列與list的轉換 切片與深(淺)拷貝

2021-10-03 20:41:42 字數 1613 閱讀 5628

list元素是一維array的情況:

a = np.array([1

,2])

b = np.array([5

,6,7

])c =[a,b]

d = np.array(c)

轉換成功:

2. list元素是二維array的情況:

a = np.array([[

1,2]

,[3,

4]])

b = np.array([[

5,6,

7],[

8,9,

10]])

c =[a,b]

d = np.array(c)

由於a、b陣列的shape分別為(2,2)、(2,3),因此會報錯valueerror: could not broadcast input array from shape(2,2) into shape (2).此時有兩種方法解決:1. 展開陣列;2. 利用mask統一shape ,參考:

a = np.zeros(2)

b = np.ones(3)

print

(a)# [0. 0.] a

print(id

(a))

# 140671659430096 a位址

print

(b)# [1. 1. 1.] b

print(id

(b))

# 140671659430576 b位址a[:

]= b[:2

]# 切片並賦值(a、b都切片)

print

(a)# [1. 1.]

print(id

(a))

# 140671659430096 a位址未變a[0

]=0# 改變a中元素的值

print

(a)# [0. 1.]

print

(b)# [1. 1. 1.] b未改變,因為切片為深拷貝

a = b[:2

]# 切片並賦值(a未切片)

print

(a)# [1. 1.]

print(id

(a))

# 140671658719152 a有了新的位址a[0

]=0# 改變a中元素的值

print

(a)# [0. 1.]

print

(b)# [0. 1. 1.] b中元素值隨之改變

a = b # 直接賦值 淺拷貝

print

(a)# [0. 1. 1.]

print(id

(a))

# 140671659430576 a[0

]=1print

(a)# [1. 1. 1.]

print

(b)# [1. 1. 1.]

List轉換陣列 陣列轉換List

陣列轉list package listtoarray import j a.util.arraylist import j a.util.arrays import j a.util.collections import j a.util.list import j a.util.stream.c...

List與陣列實體的轉換

1.list轉換成為陣列。這裡的list是實體是arraylist 呼叫arraylist的toarray方法。toarray public t toarray t a 返回乙個按照正確的順序包含此列表中所有元素的陣列 返回陣列的執行時型別就是指定陣列的執行時型別。如果列表能放入指定的陣列,則返回放...

List陣列轉換

1.list轉換成為陣列。這裡的list是實體是arraylist 呼叫arraylist的toarray方法。toarray public t toarray t a 返回乙個按照正確的順序包含此列表中所有元素的陣列 返回陣列的執行時型別就是指定陣列的執行時型別。如果列表能放入指定的陣列,則返回放...