2.1 NumPy 数组对象
NumPy数组一般是同质的(但有一种特殊的数组类型例外,它是异质的),即数组中的所有
元素类型必须是一致的。这样有一个好处:如果我们知道数组中的元素均为同一类型,该数组所
需的存储空间就很容易确定下来。
2.2创建多维数组
In[5]:import numpy as np
In[6]:m=np.array([np.arange(2),np.arange(2)])
In[7]:m
Out[7]:
array([[0,1],
[0, 1]])
In[8]:m.shape
Out[8]:(2L, 2L)
2.2.1 选取数组元素
In[9]:a=np.array([[1,2],[3,4]])
In[10]:a
Out[10]:
array([[1,2],
[3, 4]])
在创建这个多维数组时,我们给array函数传递的对象是一个嵌套的列表。现在来依次选取
该数组中的元素。记住,数组的下标是从0开始的。
In[11]:a[0,0]
Out[11]:1
In[12]:a[1,1]
Out[12]:4
对于数组a,只需要用a[m,n]选取各数组元素,其中m和n为元素下标,对应的位置如下表所示。
2.2.2NumPy 数据类型
2.2.3 数据类型对象
数据类型对象是numpy.dtype类的实例。如前所述,NumPy数组是有数据类型的,更确切
地说,NumPy数组中的每一个元素均为相同的数据类型。数据类型对象可以给出单个数组元素在
内存中占用的字节数,即dtype类的itemsize属性:
In[13]:a.dtype.itemsize
Out[13]:4
2.2.4 字符编码
创建了一个单精度浮点数数组:
In[16]:np.arange(7, dtype='f')
Out[16]:array([ 0., 1., 2., 3., 4., 5., 6.], dtype=float32)
2.2.5 自定义数据类型
可以使用Python中的浮点数类型:
In[18]:np.dtype(float)
Out[18]:dtype('float64')
可以使用字符编码来指定单精度浮点数类型:
In: dtype('f')
Out: dtype('float32')
可以使用字符编码来指定双精度浮点数类型:
In: dtype('d')
Out:dtype('float64')
2.2.6 dtype 类的属性
dtype类有很多有用的属性。例如,我们可以获取数据类型的字符编码:
In[23]:t=np.dtype('Float64')
In[24]:t.char
Out[24]:'d'
type属性对应于数组元素的数据类型:
In[25]:t.type
Out[25]:numpy.float64
str属性可以给出数据类型的字符串表示,该字符串的首个字符表示字节序(endianness),后面如果还有字符的话,将是一个字符编码,接着一个数字表示每个数组元素存储所需的字节数。这里,字节序是指位长为32或64的字(word)存储的顺序,包括大端序(big-endian)和小端序(little-endian)。大端序是将最高位字节存储在最低的内存地址处,用>表示;与之相反,小端序是将最低位字节存储在最低的内存地址处,用<表示:
In[26]:t.str
Out[26]:'<f8'