NumPy是Python中科学计算的基础包。它是一个Python库,提供多维数组对象,各种派生对象(如掩码数组和矩阵),以及用于数组快速操作的各种API,有包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等等。
NumPy包的核心是 ndarray 对象。它封装了python原生的同数据类型的 n 维数组,为了保证其性能优良,其中有许多操作都是代码在本地进行编译后执行的。
NumPy数组 和 原生Python Array(数组)之间有几个重要的区别:
- NumPy 数组在创建时具有固定的大小,与Python的原生数组对象(可以动态增长)不同。更改ndarray的大小将创建一个新数组并删除原来的数组。
- NumPy 数组中的元素都需要具有相同的类型,因此在内存中的大小相同。 例外情况:Python的原生数组里包含了NumPy的对象的时候,这种情况下就允许不同大小元素的数组。
- NumPy 数组有助于对大量数据进行高级数学和其他类型的操作。通常,这些操作的执行效率更高,比使用Python原生数组的代码更少。
- 越来越多的基于Python的科学和数学软件包使用NumPy数组; 虽然这些工具通常都支持Python的原生数组作为参数,但它们在处理之前会还是会将输入的数组转换为NumPy的数组,而且也通常输出为NumPy数组。换句话说,为了高效地使用当今科学/数学基于Python的工具(大部分的科学计算工具),你只知道如何使用Python的原生数组类型是不够的 - 还需要知道如何使用 NumPy 数组。
numpy基础
数据类型
NumPy的主要对象是同构多维数组。它是一个元素表(通常是数字),所有类型都相同,由非负整数元组索引。在NumPy维度中称为 轴(即多维数组的维度:多少行、多少列) 。
ndarray(多维数组)对象的重要“属性”:
- ndarray.ndim - 数组的轴(维度)的个数。
- ndarray.shape - 数组的维度。这是一个整数的元组,表示每个维度中数组的大小。对于有 n 行和 m 列的矩阵,shape 将是 (n,m)。因此,shape 元组的长度就是rank或维度的个数 ndim。
- ndarray.size - 数组元素的总数。这等于 shape 的元素的乘积。
- ndarray.dtype - 一个描述数组中元素类型的对象。
数组创建
方式一
调用numpy的array函数:
numpy.array([[1,2,3],[4,5,6]],dtype=None,copy=True,ndmin=0)
# dtype:数组元素的数据类型,可选 copy:对象是否需要复制 ndmin: 指定生成数组的最小维度
# 最小维度
import numpy as np
a = np.array([1,2,3,4],ndmin=2)
print(a)
# 输出:[[1,2,3,4]]
# dtype参数
b = np.array([1,2,3],dtype=compex)
print(b)
# 输出:[1.+0.j 2.+0.j 3.+0.j]
方式二
调用numpy的其他函数:
# np.empty():创建指定形状(shape)、数据类型(dtype)、且值随机的未初始化的数组
c = np.empyt([3,2],dtype=int)
print(c)
# 输出:[[1 0 1]
[0 0 0]
[0 0 0]]
# numpy.zeros: 创建指定大小的数组,数组元素以 0 来填充:
d = np.zeros((3,4))
print(d)
# numpy.ones: 创建指定形状的数组,数组元素以 1 来填充:
e = np.ones((3,4))
print(e)
方式三
将已知的数组或序列,转换成ndarray:
# np.asarray(): 将已知的序列转换成ndarray
a1 = [1,2,3]
a2 = (4,5,6)
a3 = [(1,2,3),(4,5,6)]
b1 = np.asarray(a1)
b2 = np.asarray(a2)
b3 = np.asarray(a3)
print(b1,b2,b3)
方式四
从数值范围内创建ndarray对象
# numpy 包中的使用 arange 函数创建数值范围并返回 ndarray 对象.
# np.arange(start(默认为0),stop(不包含),step(默认为1),dtype(数据类型)):
a4 = np.arange(5)
print(a4)
# 输出:[0,1,2,3,4]
# np.linspace(start,stop,num(生成的样本数量),endpoint(是否包含终止值),retstep(是否显示步长),dtype):创建一个等差数列构成的以为数组
a5 = np.linspace(1,2,5)
print(a5)
# 输出:[1. 1.25 1.5 1.75 2. ]