Python之numpy数组学习(二)
时间:2022-04-26
本文章向大家介绍Python之numpy数组学习(二),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前言
前面我们学习了numpy库的简单应用,今天来学习下比较重要的如何处理数组。
处理数组形状
下面可将多维数组转换成一维数组时的情形。
利用以下函数处理数组的形状:
- 拆解:ravel()函数可将多维数组变成一维数组。
- 拉直(Flatten):flatten()函数与ravel()相同,但是,flatten()返回的是真实的数组,需要分配新的内存空间;而ravel()函数返回的只是数组的视图。
- 用元组指定数组形状:除reshape()函数外,还可以用元组来定义数组的形状。
- 转置:在线性代数中,矩阵的转置操作非常常见,转置是一种数据变换方法,对于二维表而言,转置就意味着行变成列,同时列变成行。
- 调整大小:函数resize()的作用类似于reshape(),但是会改变所作用的数组。
堆叠数组
从深度看,数组既可以横向叠放,也可以竖向叠放。因此,可以使用vstack()、dstack()、hstack()、column_stack()、row_stack()、和concatenate()等函数。
首先我们要建立一些数组,然后整体说一下各种叠加方式,最后放上示例代码:
- 水平叠加:先介绍水平叠加方式,即用元组确定ndarrays()数组的形状,然后交由hstack()函数来码放这些数组。
- 垂直叠加:使用垂直叠加方法,先要构建一个元组,然后将元组交给vstack()函数来码放数组。
- 深度叠加:还有一种深度叠加方法,这要用到dstack()函数和一个元组。这种方法是沿着第三个坐标轴(纵向)的方法来叠加一摞数组。举例来说:可以在一个图像数据的二维数组上叠加另一幅图像的数据。
- 列式堆叠:column_stack()函数以列方式对一维数组进行堆叠。
- 行式堆叠:同时,numpy也有以行方式对数组进行堆叠的函数,这个用于一维数组的函数名为row_stack(),它将数组作为行码放到二维数组中。
整体代码如下:
#-*- coding:utf-8 -*-
#stacking.py
import numpy as np
#创建数组
a = np.arange(9).reshape(3,3)
print(a)
#Out:
#array([[0, 1, 2],
# [3, 4, 5],
# [6, 7, 8]])
b = 2 * a
print (b)
#Out:
#array([[ 0, 2, 4],
# [ 6, 8, 10],
# [12, 14, 16]])
#水平叠加
print (np.hstack((a, b)))
#Out:
#array([[ 0, 1, 2, 0, 2, 4],
# [ 3, 4, 5, 6, 8, 10],
# [ 6, 7, 8, 12, 14, 16]])
print (np.concatenate((a, b), axis=1))
#Out:
#array([[ 0, 1, 2, 0, 2, 4],
# [ 3, 4, 5, 6, 8, 10],
# [ 6, 7, 8, 12, 14, 16]])
#垂直叠加
print (np.vstack((a, b)))
#Out:
#array([[ 0, 1, 2],
# [ 3, 4, 5],
# [ 6, 7, 8],
# [ 0, 2, 4],
# [ 6, 8, 10],
# [12, 14, 16]])
print (np.concatenate((a, b), axis=0))
#Out:
#array([[ 0, 1, 2],
# [ 3, 4, 5],
# [ 6, 7, 8],
# [ 0, 2, 4],
# [ 6, 8, 10],
# [12, 14, 16]])
#深度叠加
print (np.dstack((a, b)))
#Out:
#array([[[ 0, 0],
# [ 1, 2],
# [ 2, 4]],
#
# [[ 3, 6],
# [ 4, 8],
# [ 5, 10]],
#
# [[ 6, 12],
# [ 7, 14],
# [ 8, 16]]])
oned = np.arange(2)
print (oned)
#Out: array([0, 1])
twice_oned = 2 * oned
print (twice_oned)
#Out: array([0, 2])
print (np.column_stack((oned, twice_oned)))
#Out:
#array([[0, 0],
# [1, 2]])
print (np.column_stack((a, b)))
#Out:
#array([[ 0, 1, 2, 0, 2, 4],
# [ 3, 4, 5, 6, 8, 10],
# [ 6, 7, 8, 12, 14, 16]])
#数组对比
print (np.column_stack((a, b)) == np.hstack((a, b)))
#Out:
#array([[ True, True, True, True, True, True],
# [ True, True, True, True, True, True],
# [ True, True, True, True, True, True]], dtype=bool)
#列式堆叠
print (np.row_stack((oned, twice_oned)))
#Out:
#array([[0, 1],
# [0, 2]])
print (np.row_stack((a, b)))
#Out:
#array([[ 0, 1, 2],
# [ 3, 4, 5],
# [ 6, 7, 8],
# [ 0, 2, 4],
# [ 6, 8, 10],
# [12, 14, 16]])
print (np.row_stack((a,b)) == np.vstack((a, b)))
#Out:
#array([[ True, True, True],
# [ True, True, True],
# [ True, True, True],
# [ True, True, True],
# [ True, True, True],
# [ True, True, True]], dtype=bool)
小结
今天学习一下Python中numpy的堆叠数组。希望通过上面的操作能帮助大家。如果你有什么好的意见,建议,或者有不同的看法,我都希望你留言和我们进行交流、讨论。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法