title: D01|Numpy简介
author: Adolph Lee
categories: 数据挖掘基础
tags:
- Python
- 数据挖掘基础
- Numpy
初识Numpy
Numpy是一个Python基础科学计算包,它的核心是多维数组ndarray对象,Numpy提供了诸如数学、逻辑、形状操作、排序、基本统计等基于ndarray的快速计算API。Numpy几乎可以说是Python科学计算的基石,一些强大机器学习或科学计算库都是基于Numpy,例如scikit-learn,pandas等。
- Numpy是一个基础的科学计算包
- Numpy的核心是ndarray对象
- ndarray封装了Python的数组ndarray的几个特点
- ndarray是一个多维数组
- ndarray在创建之初便固定了大小,如果更改ndarray对象的大小,本质上是先新增后删除。
- ndarray中的元素需要相同的数据类型。
为什么Numpy这么快
Numpy在执行到涉及ndarry的操作时,其是由预编译好的C代码快速执行。因此Numpy不仅拥有Python简介优雅特性,也拥有几近于C的高效。
创建一个数组
import numpy as np#创建一个一维数组array_1d = np.array([1,2,3,4]) print(array_1d)print(type(array_1d))#创建一个二维数组array_2d = np.array([[1,2,3],[1,2,3]])print(array_2d)print(type(array_2d))#创建一个三维数组array_3d = np.array([[[1,2,3],[1,2,3]],[[3,4,5],[3,4,5]]])print(array_3d)print(array_3d)
ndarray的主要属性
- ndarray.ndim 数组的维度个数
- ndarray.shape 数组的维度,对于一个n行m列二维数组,其shape就是(n,m)
- ndarray.size 数组的元素个数
- ndarray.dtype 数组中的元素类型,例如int、int64
- ndarray.itemsize 数组中每个元素的字节大小
快速创建numpy数组
- numpy.arange(start,stop,step,dtype)
- 用于创建一个具有等差数列性质的数组
- start 指定数值范围的开始
- stop 指定数值范围的结束
- [start,stop) 是一个左闭右开区间
- step 生成数列的步长
- dtype 指定输入数组中的元素类型
- numpy.linspace(start,stop,num,endpoint=True,retstep=False,dtype=None)
- 用于创建具有指定个数元素等差数列的数组
- start 指定等差数列的初始值
- stop 指定等差数列的结束值
- num 指定等差数列的元素个数
- endpoint 指定生成的等差数列是否包含stop值,默认值True 包含
- retstep 是否显示等差数列的步长,默认为False 不显示
- dtype 指定输入数组中的元素类型
- numpy.logspace(start,stop,num,endpoint=True,base=10.0,dtype=None)
- 用于创建具有指定个数元素等比数列的数组
- start 指定等比数列的起始值 起始值等于 base的start次方
- stop 指定等比数列的结束值 终止值为 base的stop次方
- num 指定等比数列的元素个数
- 指定生成的等比数列是否包含stop值,默认值True 包含
- 指定base值
- 指定输入数组中的元素类型
快速创建数组
import numpy as np# 快速创建一个一维数组array_1d = np.arange(0,10,2)print(array_1d)print(type(array_1d))# 快速创建一个二维数组# reshape用来在不改变数据的情况下改变数组的形状,后面会详细讲到array_2d = np.arange(0,10).reshape(2,5) print(array_2d)print(type(array_2d))# 快速创建一个三位数组array_3d = np.arange(0,20).reshape(2,2,5)print(array_3d)print(type(array_3d))# 利用linspace快速创建一个二维数组array_2d = np.linspace(1,10,10).reshape(2,5)print(array_2d)print(type(array_2d))# 利用logspace创建一个一维数组array_1d = np.logspace(1,2,10)print(array_1d)print(type(array_1d))