科学计算和可视化
Posted 007abc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了科学计算和可视化相关的知识,希望对你有一定的参考价值。
Numpy
定义:NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。它主要用于数组计算,包括:
一个强大的N维数组对象 ndarray
广播功能函数
整合 C/C++/Fortran 代码的工具
线性代数、傅里叶变换、随机数生成等功能
1、ndarray : ndarray是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。创建一个 ndarray 只需调用 NumPy 的 array 函数即可。
2、参数说明:
名称 | 描述 |
object | 数组或嵌套的数列 |
dtype | 数组元素的数据类型,可选 |
copy | 对象是否需要复制,可选 |
order | 创建数组的样式,C为行方向,F为列方向,A为任意方向(默认) |
subok | 默认返回一个与基类型一致的数组 |
ndmin | 指定生成数组的最小维度 |
实例:
3、数据类型
名称 | 描述 |
bool_ | 布尔型数据类型(True 或者 False) |
int_ | 默认的整数类型(类似于 C 语言中的 long,int32 或 int64) |
intc | 与 C 的 int 类型一样,一般是 int32 或 int 64 |
int32 | 整数(-2147483648 to 2147483647) |
uint8 | 无符号整数(0 to 255) |
float_ | float64 类型的简写 |
complex_ | complex128 类型的简写,即 128 位复数 |
numpy.dtype(object, align, copy) : object - 要转换为的数据类型对象; align - 如果为 true,填充字段使其类似 C 的结构体; copy - 复制 dtype 对象 ,如果为 false,则是对内置数据类型对象的引用。
实例:
4、数组属性
(1)numpy 数组的维数称为秩(rank),秩就是轴的数量,即数组的维度,一维数组的秩为 1,二维数组的秩为 2,以此类推。每一个线性的数组称为是一个轴(axis),也就是维度(dimensions)。比如说,二维数组相当于是两个一维数组,其中第一个一维数组中每个元素又是一个一维数组。
属性 | 说明 |
ndarray.ndim | 秩,即轴的数量或维度的数量 |
ndarray.shape | 数组的维度,对于矩阵,n 行 m 列 |
ndarray.size | 数组元素的总个数,相当于 .shape 中 n*m 的值 |
ndarray.dtype | ndarray 对象的元素类型 |
ndarray.real(imag) | ndarray元素的实(虚)部 |
ndarray.itemsize | ndarray 对象中每个元素的大小,以字节为单位 |
实例:
5、创建数组
- numpy.empty 方法用来创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组 numpy.empty(shape, dtype = float, order = ‘C‘)
-
numpy.zeros 创建指定大小的数组,数组元素以 0 来填充 numpy.zeros(shape, dtype = float, order = ‘C‘)
-
numpy.ones 创建指定形状的数组,数组元素以 1 来填充 numpy.ones(shape, dtype = None, order = ‘C‘)
numpy.asarray 类似 numpy.array,但 numpy.asarray 参数只有三个,比 numpy.array 少两个
numpy.arange 函数创建数值范围并返回 ndarray 对象 numpy.arange(start, stop, step, dtype) (start:起始值,默认为0 ;stop:终止值(不包含) step:步长,默认为
1; dtype:返回
ndarray
的数据类型,如果没有提供,则会使用输入数据的类型。)
6、切片和索引: slice 函数
7、广播:对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。
Matplotlib:
实例:
import numpy as np from matplotlib import pyplot as plt x = np.arange(1,11) y = 2 * x - 1 plt.title("demo") plt.xlabel("x axis caption") plt.ylabel("y axis caption") plt.plot(x,y) plt.show()
效果:
雷达图:
import numpy as np import matplotlib.pyplot as plt import matplotlib matplotlib.rcParams[‘font.family‘]=‘SimHei‘ matplotlib.rcParams[‘font.sans-serif‘] = [‘SimHei‘] labels = np.array([‘第一次‘, ‘第二次‘, ‘第三次‘, ‘第四次‘, ‘第五次‘,‘第六次‘]) nAttr = 6 data = np.array([50,91,80,100,70,40]) angles = np.linspace(0, 2*np.pi, nAttr, endpoint=False) data = np.concatenate((data, [data[0]])) angles = np.concatenate((angles, [angles[0]])) fig = plt.figure(facecolor="white") plt.subplot(111, polar=True) plt.plot(angles,data,‘bo-‘,color =‘g‘,linewidth=2) plt.fill(angles,data,facecolor=‘g‘,alpha=0.25) plt.thetagrids(angles*180/np.pi, labels) plt.figtext(0.52, 0.95, ‘ljt的成绩表‘, ha=‘center‘) plt.grid(True) plt.show()
结果显示:
以上是关于科学计算和可视化的主要内容,如果未能解决你的问题,请参考以下文章