list转np.array:
- 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 ,参考:https://blog.csdn.net/sinat_29957455/article/details/103487477
数组切片与深(浅)拷贝
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] = 1
print(a) # [1. 1. 1.]
print(b) # [1. 1. 1.]