Numpy 模块,是 Python 用于数值计算的基础模块,支持大量的维度数值与矩阵计算。
Numpy 通常与SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用。
使用 Numpy 模块,开发人员可以执行以下操作:
1)数组的算数和逻辑运算;
2)傅立叶变换和用于图形操作的例程;
3)与线性代数有关的操作,Numpy 拥有线性代数的随机数生成的内置函数。
Numpy 中最重要的对象是称为 ndarray 的 N 维数组类型
# 基本的 ndarray 是使用 Numpy 中的数组函数创建的
numpy.array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)
''' object 返回一个数组或任何序列
dtype 数组的所需数据类型,可选
copy 对象是否被复制,可选,默认 true
order C(按行)、F(按列)、A(任意,默认)
subok 默认情况下,返回的数组被强制为基类数组。若为true,则返回子类
ndmin 指定返回数组的最小维数'''
# 导入numpy库
import numpy as np
# 创建一个一维数组
a = np.array([1,2,3])
# 创建一个二维数组
a = np.array([[1, 2], [3, 4]])
# 定义 dtype 参数为复数
a = np.array([1, 2, 3], dtype = complex)
print a
# 输出
[1, 2, 3]
[[1, 2]
[3, 4]]
[ 1.+0.j, 2.+0.j, 3.+0.j]
NumPy 支持比 Python 更多的数值类型。
数据类型 | 描述 |
---|---|
bool_ | 存储为一个字节的布尔值(真或假) |
int_ | 默认整数,相当于 C 的long ,通常为int32 或int64 |
intc | 相当于 C 的int ,通常为int32 或int64 |
intp | 用于索引的整数,相当于 C 的size_t ,通常为int32 或int64 |
int8 | 字节(-128 ~ 127) |
int16 | 16 位整数(-32768 ~ 32767) |
int32 | 32 位整数(-2147483648 ~ 2147483647) |
int64 | 64 位整数(-9223372036854775808 ~ 9223372036854775807) |
uint8 | 8 位无符号整数(0 ~ 255) |
uint16 | 16 位无符号整数(0 ~ 65535) |
uint32 | 32 位无符号整数(0 ~ 4294967295) |
uint64 | 64 位无符号整数(0 ~ 18446744073709551615) |
float_ | float64 的简写 |
float16 | 半精度浮点:符号位,5 位指数,10 位尾数 |
float32 | 单精度浮点:符号位,8 位指数,23 位尾数 |
float64 | 双精度浮点:符号位,11 位指数,52 位尾数 |
complex_ | complex128 的简写 |
complex64 | 复数,由两个 32 位浮点表示(实部和虚部) |
complex128 | 复数,由两个 64 位浮点表示(实部和虚部) |
numpy.arange(n) 生成 0~n-1 的整数
import numpy as ny
# 生成 0~2 的所有整数
y=ny.arange(3)
print(y)
# 输出
[0,1,2]
numpy.arange(m,n,k) 数据生成为:从 m 到 n 的以 k 为步长
import numpy as ny
# 生成从1到9,以2为步长的数据
y=ny.arange(1,10,2)
print(y)
# 输出
[1 3 5 7 9]
numpy.linspace(m,n,k) 在 m 到 n 的数据中按等距取 k 个值
import numpy as ny
y=ny.linspace(1,10,3)
print(y)
#输出
[ 1. 5.5 10. ]
numpy.reshape(m,n) 定义一个 m 行 n 列的矩阵
import numpy as ny
y=ny.arange(6)
x=y.reshape(2,3)
print(x)
# 输出
[[0,1,2]
[3,4,5]]
numpy.reshape(n,-1)或(-1,n) 确定矩阵的行(列)后,相应的列(行)自动确定
import numpy as ny
y=ny.arange(6)
x=y.reshape(2,-1)
print(x)
# 输出
[[0,1,2]
[3,4,5]]
numpy.empty 它创建指定形状和
dtype
的未初始化数组
numpy.empty(shape, dtype = float, order = 'C')
''' Shape 空数组的形状,整数或整数元组
Dtype 所需的输出数组类型,可选
Order 'C'为按行的 C 风格数组,'F'为按列的 Fortran 风格数组'''
numpy.zeros((m,n)) 生成一个 m 行 n 列的零矩阵
import numpy as ny
y=ny.zeros((3,3))
print(y)
# 输出
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]
numpy.ones((k,m,n)), dtype=numpy.int32 生成 k 个 m 行 n 列的单位矩阵,且元素的数据类型为整数
import numpy as ny
y=ny.ones((1,2,2),dtype=ny.int32)
print(y)
#输出
[[[1 1]
[1 1]]]
numpy.shape 打印矩阵的行和列
import numpy as ny
y=ny.arange(6)
x=y.reshape(2,3)
print(x.shape)
#输出
(2, 3)
numpy.ndim 计算矩阵的维度
import numpy as ny
y=ny.arange(6)
x=y.reshape(2,3)
print(x.ndim)
#输出
2
numpy.size 输出数组的元素的个数
import numpy as ny
y=ny.arange(6)
x=y.reshape(2,3)
print(x.size)
#输出
6
numpy.sqrt(B) 矩阵中每个元素开方
import numpy as ny
b=[4, 9, 16]
print(ny.sqrt(b))
#输出
[2,3,4]
numpy.floor() 矩阵中的每一个元素都向下取整
import numpy as ny
b=[4, 5.3, 6.7]
print(ny.floor(b))
#输出
[4,5,6]
numpy.ravel() 将矩阵重新拉伸成一个向量
import numpy as ny
y=ny.arange(6)
x=y.reshape(2,3)
a=ny.ravel(x)
print(a)
#输出
[0 1 2 3 4 5]
numpy.T 求转置矩阵
import numpy as ny
y=ny.arange(6)
x=y.reshape(2,3)
a=x.T
print(a)
#输出
[[0 3]
[1 4]
[2 5]]
numpy.hstack 横向拼接;
numpy.vstack 纵向拼接
import numpy as ny
y=ny.arange(6)
x=y.reshape(2,3)
a=ny.arange(2,8,1)
z=a.reshape(2,3)
print(ny.hstack((x,z)))
#输出
[[0 1 2 2 3 4]
[3 4 5 5 6 7]]
numpy.hsplit(a,n) 将a矩阵横向分为n份;
numpy.hsplit(a,(m,n)) 在索引为m和n的空隙处将矩阵横向切开
import numpy as ny
y=ny.arange(6)
x=y.reshape(2,3)
a=ny.arange(2,8,1)
z=a.reshape(2,3)
q=ny.hstack((x,z))
print(ny.hsplit(q,3))
#输出
[array([[0, 1],
[3, 4]]), array([[2, 2],
[5, 5]]), array([[3, 4],
[6, 7]])]
numpy.itemsize 返回这一数组属性返回数组中每个元素的字节单位长度
# 数组的 dtype 为 int8(一个字节)
import numpy as np
x = np.array([1,2,3,4,5], dtype = np.int8)
print x.itemsize
# 数组的 dtype 现在为 float32(四个字节)
import numpy as np
x = np.array([1,2,3,4,5], dtype = np.float32)
print x.itemsize
# 输出
1
4
numpy.asarray 此函数类似于 numpy.array 除了它有较少的参数,这个例程对于将 Python 序列转换为 ndarray 非常有用
numpy.asarray(a, dtype = None, order = None)
''' a 任意形式的输入参数,比如列表、列表的元组、元组、元组的元组、元组的列表
dtype 通常,输入数据的类型会应用到返回的ndarray
order 'C'为按行的 C 风格数组,'F'为按列的 Fortran 风格数组'''