Python Quants我爱编程

numpy必知必会——ndarray

2016-08-30  本文已影响617人  fasionchan

简介

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.]]])

内存布局

上一篇 下一篇

猜你喜欢

热点阅读