Python Numpy学习笔记(二)

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

内容简介: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]]

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

查看所有标签

猜你喜欢:

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

编程珠玑

编程珠玑

Jon Bentley / 人民邮电出版社 / 2006-11 / 28.0

《编程珠玑》第一版是我早期职业生涯中阅读过的对我影响较大的书籍之一,在书中首次接触到的很多观点都让我长期受益。作者在这一版本中做了重要更新,新增加的很多例子让我耳目一新。——Steve McConnell,《代码大全》作者  如果让程序员列举出他们喜欢的书籍,Jon Bentley的《编程珠玑》一定可以归于经典之列。如同精美的珍珠出自饱受沙砾折磨的牡蛎,程序员们的精彩设计也来源泉于曾经折磨他们的实......一起来看看 《编程珠玑》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

SHA 加密
SHA 加密

SHA 加密工具