numpy必知必会——ndarray

简介

ndarray顾名思义,是一个用来存储多维数组的数据结构。

底层ndarray构造函数

现在,用ndarray创建一个(2, 3)二维数组,并命名为a。可以看到,a是一个数组,包含2个元素;每个元素分别又是一个数组,包含3个float。请注意,float元素的值是随机的,因为没有指定。

>>> a = np.ndarray(shape=(2, 3), dtype=float)
>>> a
array([[  6.91857857e-310,   6.91857857e-310,   4.78249221e-317],
       [  1.08552349e-316,   1.08552230e-316,   1.08552112e-316]])

接下来,我们可以用下标访问数组a,取出子数组。数组a维数为2,子数组维数则为1。

>>> a[0]
array([  6.91857857e-310,   6.91857857e-310,   4.78249221e-317])
>>> a[1]
array([  1.08552349e-316,   1.08552230e-316,   1.08552112e-316])

第二维只包含2个元素,因此当下标超出合法范围时,访问将报错。请注意,错误类型为IndexError

>>> a[2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: index 2 is out of bounds for axis 0 with size 2

同样地,通过下标可以访问子数组的元素,即取出浮点数。

>>> a[0][0]
6.9185785704028074e-310

高层接口

ndarray基础上,numpy提供了若干个高层构造函数,包括zerosempty等。

现在,使用zeros创建一个(2, 3, 4)三维数组。注意到,所有的值都初始化为0,而不是一堆没有意义的随机数值。

>>> np.zeros((2, 3, 4))
array([[[ 0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.]],

       [[ 0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.]]])

内存布局

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容