Python Numpy学习笔记(二)

栏目: Python · 发布时间: 8年前

内容简介:Python Numpy学习笔记(二)

Python Numpy学习笔记第二篇。目前,正在学习北京理工大学嵩天老师在中国大学MOOC的课程:Python数据分析与展示。

ndarray数组的操作

索引和切片

索引:获取数组中特定位置元素的过程

切片:获取数组元素子集的过程

  • 一维数组的索引和切片
>>> a = np.array([1, 2, 3, 4, 5, 6])
>>> a[2]
3
>>> a[-2]   # 从右开始
5
>>> a[1:4]      # 起始编号:终止编号(不含):步长
array([2, 3, 4])
>>> a[0:6:2]    # 指定步长为2
array([1, 3, 5])
  • 多维数组的索引和切片
>>> a = np.array([[1, 2, 3],[4, 5, 6]])
>>> a
array([[1, 2, 3],
       [4, 5, 6]])
>>> a[1, 2]
6
>>> a[-1,-2]    # 从右开始
5
# 选取一个维度用:,不同维度用逗号分开
>>> a[:1, 1:]   # 每个维度切片方法与一维数组相同
array([[2, 3]])

基本运算

  • 一元函数
函数 说明
np.abs(x) np.fabs(x) 计算数组各元素的绝对值
np.sqrt(x) 计算数组各元素的平方根
np.square(x) 计算数组各元素的平方
np.log(x) np.log10(x) np.log2(x) 计算数组各元素的自然对数、10底对数和2底对数
np.ceil(x) np.floor(x) 计算数组各元素的ceiling值 或 floor值
>>> a = np.array([-2, 4, 6])
>>> np.abs(a)
array([2, 4, 6])
>>> a
array([-2,  4,  6])
>>> np.fabs(a)
array([ 2.,  4.,  6.])
>>> b = np.square(a)
>>> b
array([ 4, 16, 36])
>>> np.sqrt(b)
array([ 2.,  4.,  6.])
>>> np.log2(b)
array([ 2.      ,  4.      ,  5.169925])
>>> a = np.array([0.2, 1.5, 2.8])
>>> np.ceil(a)
array([ 1.,  2.,  3.])
>>> np.floor(a)
array([ 0.,  1.,  2.])
函数 说明
np.rint(x) 计算数组各元素的四舍五入值
np.modf(x) 将数组各元素的小数和整数部分以两个独立数组形式返回
np.cos(x) np.cosh(x) 计算数组各元素的普通型和双曲型三角函数
np.sin(x) np.sinh(x) 计算数组各元素的普通型和双曲型三角函数
np.tan(x) np.tanh(x) 计算数组各元素的普通型和双曲型三角函数
np.exp(x) 计算数组各元素的指数值
np.sign(x) 计算数组各元素的符号值,1(+),0,‐1(‐)
  • 二元函数
函数 说明
+, ‐, , /, * 两个数组各元素进行对应运算
np.maximum(x,y) np.fmax() 元素级的最大值/最小值计算
np.minimum(x,y) np.fmin() 元素级的最大值/最小值计算
np.mod(x,y) 元素级的模运算
np.copysign(x,y) 将数组y中各元素值的符号赋值给数组x对应元素
>, <, >=, <=, ==, != 算术比较,产生布尔型数组
>>> a = np.array([[1, 2, 3],[4, 5, 6]])
>>> b = np.array([[1, 2, 3],[4, 5, 6]])
>>> a + b
array([[ 2,  4,  6],
       [ 8, 10, 12]])
>>> a - b
array([[0, 0, 0],
       [0, 0, 0]])
>>> a * b
array([[ 1,  4,  9],
       [16, 25, 36]])
>>> a / b
array([[1, 1, 1],
       [1, 1, 1]])
>>> a**2
array([[ 1,  4,  9],
       [16, 25, 36]])
>>> np.maximum(a, b)
array([[1, 2, 3],
       [4, 5, 6]])
>>> np.fmax(a, b)
array([[1, 2, 3],
       [4, 5, 6]])
>>> np.mod(a, b)
array([[0, 0, 0],
       [0, 0, 0]])
>>> a >= b
array([[ True,  True,  True],
       [ True,  True,  True]], dtype=bool)

ndarray数组的变换

维度变换

方法 说明
.reshape(shape) 不改变数组元素,返回一个shape形状的数组,原数组不变
.resize(shape) 与.reshape()功能一致,但修改原数组
.swapaxes(ax1,ax2) 将数组n个维度中两个维度进行调换
.flatten() 对数组进行降维,返回折叠后的一维数组,原数组不变
>>> import numpy as np
>>> a = np.ones((2,6))
>>> a
array([[ 1.,  1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.,  1.,  1.]])
>>> a.reshape((3,4))
array([[ 1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.]])
>>> a
array([[ 1.,  1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.,  1.,  1.]])
>>> a.resize((3,4))
>>> a
array([[ 1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.]])
>>> a.flatten()
array([ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.])
>>> a
array([[ 1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.]])

类型变换

astype()方法一定会创建新的数组(原始数据的一个拷贝),即使两个类型一致。

>>> a = np.ones((2,3), dtype=np.int32)
>>> a
array([[1, 1, 1],
       [1, 1, 1]])
>>> a.astype(np.float)
array([[ 1.,  1.,  1.],
       [ 1.,  1.,  1.]])
>>> a
array([[1, 1, 1],
       [1, 1, 1]])

转换成列表

tolist()方式可以实现将ndarray数组转换成列表。

>>> a = np.ones((2,3), dtype=np.int32)
>>> a
array([[1, 1, 1],
       [1, 1, 1]])
>>> a.tolist()
[[1, 1, 1], [1, 1, 1]]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Programming Ruby

Programming Ruby

Dave Thomas、Chad Fowler、Andy Hunt / Pragmatic Bookshelf / 2004-10-8 / USD 44.95

Ruby is an increasingly popular, fully object-oriented dynamic programming language, hailed by many practitioners as the finest and most useful language available today. When Ruby first burst onto the......一起来看看 《Programming Ruby》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具