1. 数组的大小,可以通过其shape属性获得:
>>> a = np.array([1,2,3,4])
>>> a.shape
(4,)
>>> b = np.array([[1, 2, 3, 4], [4, 5, 6, 7], [7, 8, 9, 10]])
>>> b.shape
(3, 4)
2. 改变数组的shape:
>>> b.shape = (4,3)
>>> b
array([[ 1, 2, 3],
[ 4, 4, 5],
[ 6, 7, 7],
[ 8, 9, 10]])
>>> b.shape = (2,6)
>>> b
array([[ 1, 2, 3, 4, 4, 5],
[ 6, 7, 7, 8, 9, 10]])
注意:改变shape属性只是调整每个维度的大小,数组的元素在内存中的位置并没有改变(因此元素的总数保持不变),只是改变了索引的方式。
3. 使用数组的reshape方法,可以创建一个改变了尺寸的“新”数组,原数组的shape保持不变:
>>> d = a.reshape((2,2))
>>> d
array([[1, 2],
[3, 4]])
>>> a
array([1, 2, 3, 4])
注意:a和d其实共享内存空间,因此,对其中任意一个数组的元素的修改,都会同时修改另一数组的对应元素:
>>> a[3]=0
>>> d
array([[1, 2],
[3, 0]])
>>> d[0,1]=99
>>> a
array([ 1, 99, 3, 0])
>>> a.dtype
dtype('int32')
>>> np.array("abcd").dtype
dtype('<U4')
>>> np.arange(0,10,0.01).dtype
dtype('float64')
2. 可通过dtype参数在数组创建时指定元素类型:
>>> np.array([1,2,3,4], dtype=np.float) #浮点数
array([1., 2., 3., 4.])
>>> np.array([1,2,3,4], dtype=np.complex) #复数
array([1.+0.j, 2.+0.j, 3.+0.j, 4.+0.j])
3. 通过数组的astype可以生成一个转换了数据类型的数组,默认与原数组不共享内存空间。
>>> x = np.array([1,2,3])
>>> x.dtype
dtype('int32')
>>> y = x.astype(np.float64)
>>> y.dtype
dtype('float64')
>>> y[0]=99
>>> y
array([99., 2., 3.])
>>> x
array([1, 2, 3])
本文分享自 Python可视化编程机器学习OpenCV 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!