当前位置: 首页 > 工具软件 > NumPy > 使用案例 >

Numpy模块详解

农诚
2023-12-01

1. 什么是Numpy模块

Numpy 模块,是 Python 用于数值计算的基础模块,支持大量的维度数值与矩阵计算。

Numpy 通常与SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用。

使用 Numpy 模块,开发人员可以执行以下操作:

1)数组的算数和逻辑运算;

2)傅立叶变换和用于图形操作的例程;

3)与线性代数有关的操作,Numpy 拥有线性代数的随机数生成的内置函数。


2. numpy模块的 ndarray 对象

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]
 

3. Numpy 模块的数据类型

NumPy 支持比 Python 更多的数值类型。

数据类型描述
bool_ 存储为一个字节的布尔值(真或假)
int_默认整数,相当于 C 的long,通常为int32int64
intc相当于 C 的int,通常为int32int64
intp 用于索引的整数,相当于 C 的size_t,通常为int32int64
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 位浮点表示(实部和虚部)

4. Numpy 模块的内置函数

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 风格数组'''
 

 类似资料: