numpy 进阶
In [11]:
    
import numpy as np
x = np.array([1,2,3],dtype=np.int32)
x.data
    
    Out[11]:
In [12]:
    
str(x.data)
    
    Out[12]:
数值类型为np.int32,表明一个数字由四个字节表示,一个字节有8bit,而0x的十六进制中,一个数字代表了4个bit。
查看数据在内存中的位置
In [13]:
    
x.__array_interface__['data'][0]
    
    Out[13]:
查看数据详细信息
In [16]:
    
x.__array_interface__
    
    Out[16]:
In [35]:
    
np.dtype(int).type
    
    Out[35]:
In [36]:
    
np.dtype(int).byteorder
    
    Out[36]:
In [37]:
    
np.dtype(int).shape
    
    Out[37]:
In [46]:
    
x = np.array([[1,2,3],
             [4,5,6],
             [7,8,9]],dtype=np.int8)
str(x.data)
x.strides
    
    Out[46]:
表明:跳转到下一行需要3个字节,跳转到下一列需要1个字节。
In [48]:
    
byte_offset = 3*1 + 1*2
x.flat[byte_offset]
    
    Out[48]:
In [49]:
    
x[1,2]
    
    Out[49]:
In [41]:
    
x = np.array([1,2,3,4],dtype=np.uint8)
str(x.data)
    
    Out[41]:
In [42]:
    
x.dtype='<i2'
x
    
    Out[42]:
In [44]:
    
0x0201,0x0403
    
    Out[44]:
little-endian: least significant byte is on the left in memory
In [57]:
    
x = np.zeros((10000,))
y = np.zeros((10000*67,))[::67]
%timeit x.sum()
    
    
In [58]:
    
%timeit y.sum()
    
    
In [59]:
    
x.strides,y.strides
    
    Out[59]:
In [ ]: