本文是一个关于Python numpy的基础学习教程,其中,Python版本为Python 3.x
什么是Numpy
Numpy = Numerical + Python,它是Python中科学计算的核心库,可以高效的处理多维数组的计算。并且,因为它的许多底层函数是用C语言编写的,所以运算速度敲快。
基础知识
ndarray
NumPy的主要对象是同类型的多维数组ndarray。它是一个通用的同构数据多维容器,所有的元素必须是相同类型的,并通过正整数元组索引。利用该对象可以对整块数据执行一些数学运算,语法和标量元素之间的运算一样。在NumPy中,维度称为轴,轴的数目为rank。
介绍一下ndarray常用的属性:
- ndarray.shape:表示各个维度中数组的大小,是一个整数的元组
- ndarray.dtype:描述数组中元素类型的对象
- ndarray.ndim:数组中轴的个数
- ndarray.size:数组元素的总数
- ndarray.itemsize:数组中每个元素的字节大小
创建数组
创建数组通常有5种方式:
1. 由Python结构(list, tuple等)转换
创建数组最简单的办法就是使用array对象,它可以接受任何序列型的对象,然后产生一个新的含有传入数据的numpy数组(ndarray)。
举个最简单的例子:
import numpy as np
a = np.array([1, 2, 3])
print(a)
print(a.dtype)
print(a.shape)
2. 使用Numpy原生数组创建(arange, ones,zeros等)
如:
b = np.zeros(10)
c = np.ones((1, 2))
3. 从磁盘读取数组
使用np.load方法读取数据。
4. 使用字符串或缓冲区从原始字节创建数组
5. 使用特殊库函数(random等)
索引和切片
基础操作
一维数组中的索引表面看起来和Python list的功能差不多。
对于切片而言,当你将一个标量值赋值给一个切片时,该值会自动传播到整个选区,跟Python list最重要的区别在于:Numpy中数组的切片作用的是原始数据的视图,也就是数据没有被复制,所有的修改都会直接作用到源数据。这是因为,Numpy设计之初就是为了处理大