Numpy入门

python开源数值计算库numpy学习

Posted by millzhang on June 9, 2018

介绍

Numpy是Python中科学计算的基础软件包。它 提供了多维数组,多种派生对象以及用于快速操作数组的函数和API。它包括数学、逻辑、数组形状变换、排序、选择、I/O、离散傅立叶变换、基本线性代数、基本统计运算、随机模拟等。

Numpy的核心是ndarray对象。

它封装了python原生的同数据类型的n维数组,为了保证其性能优良,其中有许多操作都是代码在本地进行编辑后执行的。

Numpy数组与标准的python-array之间的区别:

  • numpy数组在创建时候即具有固定的大小,更改ndarray的大小将创建一个新的数组并删除原来的数组;而python-array的原生数组对象可动态增长;

  • ndarray的元素需要是相同的数据类型,因此在内存中的大小相同。(有例外:Python的原生数组里包含了NumPy的对象的时候,这种情况下就允许不同大小元素的数组);

  • NumPy数组有助于对大量数据进行高级数学和其他类型的操作。 通常,这些操作的执行效率更高,比使用Python原生数组的代码更少。

基础知识

Numpy的主要对象是同类型的多数组。

特点

  • 元素的类型相同
  • 维度称为轴,轴的数目为rank
1
2
3
# 2个轴,第一个轴的长度为2,第二轴的长度为3
[[ 1., 0., 0.],
[ 0., 1., 2.]]
  • ndarray.ndim:数组的轴(维度)个数,在Python世界中,维度的数量被称为rank
  • ndarray.shape:数组的维度。返回值是一个整数的元组。n行m列,(n,m)
  • ndarray.size: 数组元素的总和,等于shape的元素的乘积
  • ndarray.dtype: 返回元素类型。例如numpy.int32,numpy.int16,numpy.float64
  • ndarray.itemsize:数组中每个元素的字节大小。元素为 float64 类型的数组的 itemsize8(=64/8),而 complex32 类型的数组的 itemsize4(=32/8)。它等于 ndarray.dtype.itemsize
  • ndarray.data:该缓冲区包含数组的实际元素。

数组的创建

  • np.array([2,3,4])
  • np.array([[1,3,45]],dtype=float64)

几个函数

  • zeros:创建由0构建的数组,例如np.zeros((3,4))
  • ones:创建由1构建的数组,例如np.ones((1,2,3),dtype=np.int16)
  • empty:创建的内容是随机的并取决于存储器的状态。默认情况下创建的dtype是float64
  • arange:三个参数,前闭后开,第三个步长,默认步长为1.
  • linspace:当 arange 与浮点参数一起使用时,由于浮点数的精度是有限的,通常不可能预测获得的元素数量。出于这个原因,通常最好使用函数 linspace ,它接收我们想要的元素数量而不是步长作为参数

其他

array, zeros, zeros_like, ones, ones_like, empty, empty_like, arange, linspace, numpy.random.rand, numpy.random.randn, fromfunction, fromfile

运算

数组上的算术运算符使用元素级别。一个新的数组被创建并填充结果。

1
2
3
a = np.array([1,2,3,4])
b = np.arange(4)
print(a-b)//[1 1 1 1]