数组的属性
除了shape和dtype属性以外,ndarray对象还有很多其他的属性,在下面一一列出。
ndim属性,给出数组的维数,或数组轴的个数:
In: b
Out: array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11], [12,13,14,15,16,17,18,19,20,21,22,23]])
In: b.ndim
Out: 2 # size属性,给出数组元素的总个数,如下所示:
In: b.size
Out: 24 # itemsize属性,给出数组中的元素在内存中所占的字节数:
In: b.itemsize
Out: 8
如果你想知道整个数组所占的存储空间,可以用nbytes属性来查看。这个属性的值其实 就是itemsize和size属性值的乘积:
In: b.nbytes
Out: 192
In: b.size * b.itemsize
Out: 192
T属性的效果和transpose函数一样,如下所示:
In: b.resize(6,4)
In: b
Out: array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9,10,11], [12,13,14,15], [16,17,18,19], [20,21,22,23]])
In: b.T
Out: array([[ 0, 4, 8, 12,16, 20], [ 1, 5, 9, 13,17, 21], [ 2, 6,10, 14,18, 22], [ 3, 7,11, 15,19, 23]])
flat属性将返回一个numpy.flatiter对象,这是获得flatiter对象的唯一方式——我 们无法访问flatiter的构造函数。这个所谓的“扁平迭代器”可以让我们像遍历一维数 组一样去遍历任意的多维数组,如下所示:
图
数组的转换
(1) 转换成列表:
In: b
Out: array([ 1.+1.j, 3.+2.j])
In: b.tolist()
Out: [(1+1j), (3+2j)] (2)
astype函数可以在转换数组时指定数据类型:
In: b
Out: array([ 1.+1.j, 3.+2.j])
In: b.astype(int)
/usr/local/bin/ipython:1: ComplexWarning: Casting complex values to real discards the imaginary part
#!/usr/bin/python
Out: array([1, 3])