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 [ ]: