numpy用法介绍-未完待续
简介
- NumPy(Numerical Python简称) 是高性能科学计算和数据分析的基础包
为什么使用?
- 标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针。这样为了保存一个简单的[1,2,3],需要有3个指针和三个整数对象。对于数值运算来说这种结构显然比较浪费内存和CPU计算时间。
- 此外Python还提供了一个array模块,array对象和列表不同,它直接保存数值,和C语言的一维数组比较类似。但是由于它不支持多维,也没有各种运算函数,因此也不适合做数值运算。
- NumPy的诞生弥补了这些不足,NumPy提供了两种基本的对象:ndarray(N-dimensional array object)和 ufunc(universal function object)。ndarray(下文统一称之为数组)是存储单一数据类型的多维数组,而ufunc则是能够对数组进行处理的函数。
依赖库
本文用以下方式导入NumPy函数库
-
from numpy.random import randn import numpy as np
ndarray对象
- 创建
- 使用python序列+array函数创建数组
-
>>> arr1 = np.array([6, 7.5, 8, 0, 1]) >>> arr2 = np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]]) >>> arr1 array([ 6. , 7.5, 8. , 0. , 1. ]) >>> arr2 array([[ 1, 2, 3, 4], [ 4, 5, 6, 7], [ 7, 8, 9, 10]])
- 通过numpy高效的数组创建函数
- arange函数:类似于python的range函数,通过指定开始值、终值和步长来创建一维数组,注意数组不包括终值
-
>>> np.arange(0,5,0.5) array([ 0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5])
- zeros函数
-
>>> np.zeros(10) array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
- 维度
- 维度的获取可以使用shape
-
>>> arr1.shape (5,) >>> arr2.shape (3, 4)
-
- 数组的维度可以通过设置shape属性
- 当某个轴的元素为-1时,将根据数组元素的个数自动计算此轴的长度,改变shape的值只是改变每个轴的大小,数组元素在内存中的位置并没有改变
-
>>> arr2.shape = 4,3 >>> arr2 array([[ 1, 2, 3], [ 4, 4, 5], [ 6, 7, 7], [ 8, 9, 10]]) >>> arr2.shape = 2,-1 >>> arr2 array([[ 1, 2, 3, 4, 4, 5], [ 6, 7, 7, 8, 9, 10]])
- 使用数组的reshape方法,可以创建一个改变了尺寸的新数组
-
>>> arr2.reshape(3,4) array([[ 1, 2, 3, 4], [ 4, 5, 6, 7], [ 7, 8, 9, 10]])
- 数组的维度可以通过设置shape属性
- 类型
- 使用dtype可以获取数组的类型,使用astype可以改变数组的类型
-
>>> arr1 = np.array([1, 2, 3], dtype=np.float64) >>> arr2 = np.array([1, 2, 3], dtype=np.int32) >>> arr1.dtype dtype('float64') >>> arr2.dtype dtype('int32') >>> float_arr = arr2.astype(np.float64) >>> float_arr array([ 1., 2., 3.]) >>> float_arr.dtype dtype('float64')
- 数组和标量的运算
-
>>> arr = np.array([[1., 2., 3.], [4., 5., 6.]]) >>> arr array([[ 1., 2., 3.], [ 4., 5., 6.]]) >>> arr * arr array([[ 1., 4., 9.], [ 16., 25., 36.]]) >>> arr - arr array([[ 0., 0., 0.], [ 0., 0., 0.]]) >>> 1 / arr array([[ 1. , 0.5 , 0.33333333], [ 0.25 , 0.2 , 0.16666667]]) >>> arr ** 0.5 array([[ 1. , 1.41421356, 1.73205081], [ 2. , 2.23606798, 2.44948974]])