Numpy-数组的基本操作(二)
2017-11-27 15:37
239 查看
在上一篇博客中,我们简单介绍了一下Numpy数组的使用,接下来将记录一下Numpy数组的更多操作。
(1).
对于同样的数组,
在水平分割中,判断是否可以分割,我们可以看第二维度的值,假设其为m,需要将其分割成n份,如若m为n的倍数,即可以分割,否则不可分割
(2).
在垂直分割中,判断是否可以分割,我们可以看第一维度的值,假设其为m,需要将其分割成n份,如若m为n的倍数,即可以分割,否则不可分割
(3).
值得注意的是,深度分割只适用于3维或者更多维的数组。判断是否可以分割,我们可以看第三维度的值,假设其为m,需要将其分割成n份,如若m为n的倍数,即可以分割,否则不可分割
数组分割
Numpy可以对数组进行水平、垂直和深度分割,我们可以将数组分割成大小相等的子数组,也可以指定原数组中需要分割的位置。(1).
水平分割,我们将通过
hsplit函数沿着水平方向将多维数组分割成大小相等子数组,如下所示:
a = np.arange(8).reshape(2,4) info = np.hsplit(a,4) print info # [array([[0],[4]]), array([[1],[5]]), array([[2],[6]]), array([[3],[7]])]
对于同样的数组,
split函数同样可以实现同样的效果,如下所示:
info = np.split(a,3,axis=1) print info # [array([[0],[4]]), array([[1],[5]]), array([[2],[6]]), array([[3],[7]])]
在水平分割中,判断是否可以分割,我们可以看第二维度的值,假设其为m,需要将其分割成n份,如若m为n的倍数,即可以分割,否则不可分割
(2).
垂直分割,我们可以通过
vsplit函数沿着垂直方向将多维数组分割成大小相等的子数组,如下所示:
a = np.arange(8).reshape(2,4) info = np.vsplit(a,2) print info # [array([[0],[1],[2],[3]]), array([[4],[5],[6],[7]])]
split函数同样也可以实现
垂直分割效果,只需要将
axis设置为0(axis默认值为0)即可,如下所示:
info = np.split(a,2) print info # [array([[0],[1],[2],[3]]), array([[4],[5],[6],[7]])]
在垂直分割中,判断是否可以分割,我们可以看第一维度的值,假设其为m,需要将其分割成n份,如若m为n的倍数,即可以分割,否则不可分割
(3).
深度分割,我们可以通过
dsplit函数沿着深度方向将多维数组分割成大小相等的子数组,如下所示:
a = np.arange(12).reshape(2,3,2) info = np.dsplit(a,2) # [[[ 0 1][ 2 3][ 4 5]] [[ 6 7][ 8 9][10 11]]] print info # [array([[[ 0],[ 2],[ 4]], [[ 6],[ 8],[10]]]), array([[[ 1],[ 3],[ 5]], [[ 7],[ 9],[11]]])]
值得注意的是,深度分割只适用于3维或者更多维的数组。判断是否可以分割,我们可以看第三维度的值,假设其为m,需要将其分割成n份,如若m为n的倍数,即可以分割,否则不可分割
数组的属性
数组除了dtype,
shape之外还有很多其他的属性,接下来将一一介绍:
ndim,获取数组的维数,或者数组轴的个数:
data = np.arange(24).reshape(2,12) print data.ndim # 2
size,获取数组元素的总个数:
data = np.arange(24).reshape(2,12) print data.size # 24
itemsize,获取数组中每个元素所占的内存大小:
data = np.arange(24).reshape(2,12) print data.itemsize # 4
nbytes,获取整个数组所占的内存大小:
data = np.arange(24).reshape(2,12) print data.nbytes # 96
T,
T属性与
transpose函数效果一样,对于一维数组,
T属性就是原数组:
data = np.arange(24).reshape(2,12) print data.T # [ [ 0 12][ 1 13][ 2 14][ 3 15][ 4 16][ 5 17][ 6 18][ 7 19][ 8 20][ 9 21][10 22][11 23] ]
flat,
flat属性将会返回一个
numpy.flatiter对象,这是获得flatiter对象的唯一方式,我们无法访问flatiter的构造函数。这个“扁平迭代器”可以像迭代一维数组一样迭代任意多维数组:
data = np.arange(6).reshape(2,3) for item in data.flat: print item
复数数组
在Numpy中,复数的虚部是用j表示的,我们可以创建一个由复数构成的数组:
data = np.array([1.j + 1, 2.j + 3]) print data # [ 1.+1.j 3.+2.j] print data.dtype # complex128
real,获取复数数组的实部,如果复数数组只包含实部元素,那么
real属性将输出原数组:
info = data.real print info # [ 1. 3.]
imag,获取复数数组的虚部:
info = data.imag print info # [ 1. 2.]
数组的转换
我们知道,我们现在所说的数组是Numpy中的数组,是一个numpy.ndarray对象。那该怎么将其转换成Python中的数组呢?我们可以使用
tolist函数来实现:
data = np.arange(6).reshape(2,3) info = data.tolist() print info # [[0, 1, 2], [3, 4, 5]] print type(info) # <type 'list'>
相关文章推荐
- numpy教程 - 基本数据类型、多维数组ndarray及其切片操作
- Numpy-数组的基本操作
- Python Numpy 数组的初始化和基本操作
- Python Numpy 数组的初始化和基本操作
- Python Numpy 数组的初始化和基本操作
- numpy数组基本操作
- Numpy入门学习之(三) 数组、矩阵基本操作
- php入门学习知识点五 关于php数组的几个基本操作
- 树状数组----构建与基本操作
- 数组Array的基本操作,进阶操作,多维数组
- 基于静态数组的顺序表的一些基本操作(1)
- 线性表的基本操作(数组实现)
- 数组操作的基本函数
- Ruby字符串、条件、循环、数组、Hash、类基本操作笔记
- JavaScript 创建数组的方法和基本操作
- PHP基本----数组操作
- Java数组的基本操作
- 实现基于静态数组的顺序表的以下基本操作:
- python 基本操作 多维数组 循环
- MATLAB基本操作(二):数组中操作