Python学习之numpy-1

part(一)

Numpy 使用教程--Numpy 安装及数值类型介绍

一、实验介绍

1.1 实验内容

如果你使用 Python 语言进行科学计算,那么一定会接触到 Numpy。Numpy 是支持 Python 语言的数值计算扩充库,其拥有强大的多维数组处理与矩阵运算能力。除此之外,Numpy 还内建了大量的函数,方便你快速构建数学模型。

1.2 实验知识点

  • Numpy 安装
  • Numpy 数值类型介绍

1.3 实验环境

  • python2.7
  • Xfce 终端
  • ipython 终端

1.4 适合人群

本课程难度为一般,属于初级级别课程,适合具有 Python 基础,并对使用 Numpy 进行科学计算感兴趣的用户。

二、Numpy 简介

Numpy 的英文全称为 Numerical Python,意味 Python 面向数值计算的第三方库。Numpy 的特点在于,针对 Python 内建的数组类型做了扩充,支持更高维度的数组和矩阵运算,以及更丰富的数学函数。

Numpy 是 Scipy.org 中最重要的库之一,它同时也被 Pandas,Matplotlib 等我们熟知的第三方库作为核心计算库。当你在单独安装这些库时,你会发现同时会安装 Numpy 作为依赖。

三、Numpy 安装

首先,我们需要在实验楼的在线环境或者本地安装 Numpy。最方便地,就是通过 pip 来进行安装了。我们只需要打开终端,键入下面的命令就可以完成安装了。

sudo pip install numpy

Windows 用户只需要打开系统命令行工具,输入 pip install numpy 即可。当然,Ubuntu & Debian 用户还可以用 apt-get 安装:

sudo apt-get install python-numpy

四、Numpy 数值类型

安装完毕之后,我们先来了解 Numpy 支持的数据类型。为了更加方便地学习和演示,以下代码在为特别注明的情况下,均在 ipython 交互式终端运行,你可以通过在线环境左下角系统应用菜单>附件打开。

Python 本身支持的数值类型有 int(整型,python2 中存在 long 长整型)、float(浮点型)、bool(布尔型) 和 complex(复数型)。

而 Numpy 支持比 Python 本身更为丰富的数值类型,细分如下:

  1. bool:布尔类型,1 个字节,值为 True 或 False。
  2. int:整数类型,通常为 int64 或 int32 。
  3. intc:与 C 里的 int 相同,通常为 int32 或 int64。
  4. intp:用于索引,通常为 int32 或 int64。
  5. int8:字节(从 -128 到 127)
  6. int16:整数(从 -32768 到 32767)
  7. int32:整数(从 -2147483648 到 2147483647)
  8. int64:整数(从 -9223372036854775808 到 9223372036854775807)
  9. uint8:无符号整数(从 0 到 255)
  10. uint16:无符号整数(从 0 到 65535)
  11. uint32:无符号整数(从 0 到 4294967295)
  12. uint64:无符号整数(从 0 到 18446744073709551615)
  13. float:float64 的简写。
  14. float16:半精度浮点,5 位指数,10 位尾数
  15. float32:单精度浮点,8 位指数,23 位尾数
  16. float64:双精度浮点,11 位指数,52 位尾数
  17. complex:complex128 的简写。
  18. complex64:复数,由两个 32 位浮点表示。
  19. complex128:复数,由两个 64 位浮点表示。

在 Numpy 中,上面提到的这些数值类型都被归于 dtype(data-type) 对象的实例。

我们可以用 numpy.dtype(object, align, copy) 来指定数值类型。而在数组里面,可以用 dtype= 参数。

import numpy as np

a = np.array([1.1, 2.2, 3.3], dtype=np.float64) # 指定 1 维数组的数值类型为 float64

此处输入图片的描述

另外,你可以使用 .astype() 方法在不同的数值类型之间相互转换。

a.astype(int) # 将 a 的数值类型从 float64 转换为 int

此处输入图片的描述

最后,你可以使用 .dtype 来查看 dtype 属性。

a.dtype # 查看 a 的数值类型

此处输入图片的描述


part(二)

Numpy 使用教程--Numpy 多维数组创建及属性

一、实验介绍

1.1 实验内容

如果你使用 Python 语言进行科学计算,那么一定会接触到 Numpy。Numpy 是支持 Python 语言的数值计算扩充库,其拥有强大的高维度数组处理与矩阵运算能力。除此之外,Numpy 还内建了大量的函数,方便你快速构建数学模型。

1.2 实验知识点

  • Numpy 数组 ndarray
  • ndarray 数组创建方法
  • ndarray 数组属性

1.3 实验环境

  • python2.7
  • Xfce 终端
  • ipython 终端

1.4 适合人群

本课程难度为一般,属于初级级别课程,适合具有 Python 基础,并对使用 Numpy 进行科学计算感兴趣的用户。

二、Numpy 多维数组

2.1 ndarray 介绍

在 python 内建对象中,数组有三种形式:

  1. list 列表:[1, 2, 3]
  2. Tuple 元组:(1, 2, 3, 4, 5)
  3. Dict 字典:{A:1, B:2}

其中,元组与列表相似,不同之处在于元组的元素不能修改。而字典由键和值构成。

python 标准类针对数组的处理局限于 1 维,并仅提供少量的功能。

而 Numpy 最核心且最重要的一个特性就是 ndarray 多维数组对象,它区别于 python 的标准类,拥有对高维数组的处理能力,这也是数值计算过程中缺一不可的重要特性。

Numpy 中,ndarray 类具有六个参数,它们分别为:

  1. shape:数组的形状。
  2. dtype:数据类型。
  3. buffer:对象暴露缓冲区接口。
  4. offset:数组数据的偏移量。
  5. strides:数据步长。
  6. order{'C','F'},以行或列为主排列顺序。

下面,我们来了解创建 ndarray 的一些方法。在 numpy 中,我们主要通过以下 5 种途径创建数组,它们分别是:

  1. 从 Python 数组结构列表,元组等转换。
  2. 使用 np.arange、np.ones、np.zeros 等 numpy 原生方法。
  3. 从存储空间读取数组。
  4. 通过使用字符串或缓冲区从原始字节创建数组。
  5. 使用特殊函数,如 random。

2.2 从列表或元组转换

在 numpy 中,我们使用 numpy.array 将列表或元组转换为 ndarray 数组。其方法为:

numpy.array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)

其中,参数:

  • object:列表、元组等。
  • dtype:数据类型。如果未给出,则类型为被保存对象所需的最小类型。
  • copy:布尔来写,默认 True,表示复制对象。
  • order:顺序。
  • subok:布尔类型,表示子类是否被传递。
  • ndmin:生成的数组应具有的最小维数。

下面,通过列表创建一个 ndarray 数组:

import numpy as np

np.array([[[1, 2, 3],[1, 2, 3],[1, 2, 3]],[[1, 2, 3],[1, 2, 3],[1, 2, 3]],[[1, 2, 3],[1, 2, 3],[1, 2, 3]]])

此处输入图片的描述

或者是列表和元组:

import numpy as np

np.array([(1,2),(3,4),(5,6)])

此处输入图片的描述

2.3 arange 方法创建

除了直接使用 array 方法创建 ndarray,在 numpy 中还有一些方法可以创建一些有规律性的多维数。首先,我们来看一看 arange()。arange() 的功能是在给定区间内创建一系列均匀间隔的值。方法如下:

numpy.arange(start, stop, step, dtype=None)

你需要先设置值所在的区间,这里为 `[开始, 停止),你应该能发现这是一个半开半闭区间。然后,在设置 step 步长用于设置值之间的间隔。最后的可选参数 dtype可以设置返回ndarray 的值类型。

举个例子:

import numpy as np

# 在区间 [3, 7) 中以 0.5 为步长新建数组
np.arange(3, 7, 0.5, dtype=float32)

此处输入图片的描述

2.4 linspace 方法创建

linspace方法也可以像arange方法一样,创建数值有规律的数组。linspace 用于在指定的区间内返回间隔均匀的值。其方法如下:

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
  • start:序列的起始值。
  • stop:序列的结束值。
  • num:生成的样本数。默认值为50。
  • endpoint:布尔值,如果为真,则最后一个样本包含在序列内。
  • retstep:布尔值,如果为真,返回间距。
  • dtype:数组的类型。

举个例子:

import numpy as np

np.linspace(0, 10, 10, endpoint=True)
np.linspace(0, 10, 10, endpoint=False)

此处输入图片的描述

2.5 ones 方法创建

numpy.ones 用于快速创建数值全部为 1 的多维数组。其方法如下:

numpy.ones(shape, dtype=None, order='C')

其中:

  • shape:用于指定数组形状,例如(1, 2)或 3。
  • dtype:数据类型。
  • order{'C','F'},按行或列方式储存数组。

举个例子:

import numpy as np

np.ones((2,3))

此处输入图片的描述

2.6 zeros 方法创建

zeros 方法和上面的 ones 方法非常相似,不同的地方在于,这里全部填充为 0。zeros 方法和 ones 是一致的。

numpy.zeros(shape, dtype=None, order='C')

其中:

  • shape:用于指定数组形状,例如(1, 2)3
  • dtype:数据类型。
  • order{'C','F'},按行或列方式储存数组。

举个例子:

import numpy as np

np.zeros((3,2))

此处输入图片的描述

2.7 eye 方法创建

numpy.eye 用于创建一个二维数组,其特点是k 对角线上的值为 1,其余值全部为0。方法如下:

numpy.eye(N, M=None, k=0, dtype=<type 'float'>)

其中:

  • N:输出数组的行数。
  • M:输出数组的列数。
  • k:对角线索引:0(默认)是指主对角线,正值是指上对角线,负值是指下对角线。

举个例子:

import numpy as np

np.eye(5, 4, 3)

此处输入图片的描述

2.8 从已知数据创建

我们还可以从已知数据文件、函数中创建 ndarray。numpy 提供了下面 5 个方法:

  1. frombuffer(buffer):将缓冲区转换为 1 维数组。
  2. fromfile(file,dtype,count,sep):从文本或二进制文件中构建多维数组。
  3. fromfunction(function,shape):通过函数返回值来创建多维数组。
  4. fromiter(iterable,dtype,count):从可迭代对象创建 1 维数组。
  5. fromstring(string,dtype,count,sep):从字符串中创建 1 维数组。

举个例子:

import numpy as np

np.fromfunction(lambda a, b: a + b, (5, 4))

此处输入图片的描述

三、ndarray 数组属性

首先,我们创建一个 ndarray 数组,这里还是沿用本章节开头的例子。

import numpy as np

a = np.array([[[1, 2, 3],[1, 2, 3],[1, 2, 3]],[[1, 2, 3],[1, 2, 3],[1, 2, 3]],[[1, 2, 3],[1, 2, 3],[1, 2, 3]]])

此处输入图片的描述

ndarray 多维数组支持下面这些属性:

3.1 ndarray.T

ndarray.T用于数组的转置,与 .transpose() 相同。

import numpy as np

a.T

此处输入图片的描述

3.2 ndarray.dtype

ndarray.dtype 用来输出数组包含元素的数据类型。

import numpy as np

a.dtype

此处输入图片的描述

3.3ndarray.imag

ndarray.imag 用来输出数组包含元素的虚部。

import numpy as np

a.imag

此处输入图片的描述

3.4ndarray.real

ndarray.real用来输出数组包含元素的实部。

import numpy as np

a.real

此处输入图片的描述

3.5 ndarray.size

ndarray.size用来输出数组中的总包含元素数。

import numpy as np

a.size

此处输入图片的描述

3.6ndarray.itemsize

ndarray.itemsize输出一个数组元素的字节数。

import numpy as np

a.itemsize

此处输入图片的描述

3.7 ndarray.nbytes

ndarray.nbytes用来输出数组的元素总字节数。

import numpy as np

a.nbytes

此处输入图片的描述

3.8 ndarray.ndim

ndarray.ndim用来输出数组尺寸。

import numpy as np

a.ndim

此处输入图片的描述

3.9 ndarray.shape

ndarray.shape用来输出数组维数组.

import numpy as np

a.shape

此处输入图片的描述

3.10 ndarray.strides

ndarray.strides用来遍历数组时,输出每个维度中步进的字节数组。

import numpy as np

a.strides

此处输入图片的描述

四、实验总结

Ndarray 是 numpy 的灵魂和核心,本章节介绍了 Ndarray 的生成或转换方法,这是了解并熟练使用 numpy 的前提。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值