numpy数组与list的转换、切片与深(浅)拷贝

list转np.array:

  1. 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.]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值