科学计算基础包——numpy
一、NumPy简介
NumPy是高性能科学计算和数据分析的基础包。它是pandas等其他各种工具的基础。
1、NumPy的主要功能
ndarray:一个多维数组结构,高效且节省空间
无需循环对整组数据进行快速运算的数学函数
线性代数、随机数生成和傅里叶变换功能
2、安装和引用方法
安装方法:pip3 install numpy
引用方法:import numpy as np
3、为什么要用NumPy?
(1)例1:已知若干家跨国公司的市值(美元),将其换算为人民币。
如果不使用NumPy,用如下方法实现:
In [1]: import numpy as np In [2]: import random In [3]: a = [random.uniform(100.0, 200.0) for i in range(50)] # 列表生成式,生成50个数字 In [4]: a Out[4]: [116.59149533887626, 122.75890815289081, ...... 188.16179683031413, 162.74198326836913] In [5]: x = 6.8 # 假设前面列表中的数字都是美元,人民币兑换美元的汇率是6.8 In [8]: b = [] # 兑换为人民币列表 In [9]: for ele in a: ...: b.append(ele * x) In [10]: b Out[10]: [792.8221683043586, 834.7605754396575, ... 1279.5002184461362, 1106.64548622491]
如果使用NumPy实现如下:
In [11]: a = np.array(a) In [12]: a Out[12]: array([116.59149534, 122.75890815, ..... 188.16179683, 162.74198327]) In [13]: x Out[13]: 6.8 In [14]: a*x array([ 792.8221683 , 834.76057544, .... 1279.50021845, 1106.64548622])
(2)例2:已知购物车中每件商品的价格与商品件数,求总金额。
In [18]: a = [random.uniform(10.0, 20.0) for i in range(50)] # 列表生成式,生成50个商品的价格10-20元之间 In [19]: b = [random.randint(1, 10) for i in range(50)] # 列表生成式,生成50种商品的件数 In [20]: a = np.array(a) In [21]: b = np.array(b) In [22]: a*b # a列表与b列表每一项相乘 Out[22]: array([ 88.1730442 , 169.76441154, 33.07910011, 56.09150886, ...... 34.74561339, 24.47704958]) In [23]: (a*b).sum() # 每一项总和,即所有商品的金额总和 Out[23]: 4583.086649099101
二、ndarray——多维数组对象
创建ndarray:np.array(array_like)
1、注意数组与列表的区别
- 数组对象内的元素类型必须相同
- 数组大小不可修改(这与内存结构有关)
2、ndarray——常用属性
(1)T:数组的转置(对高维数组而言)
(2)size:数组元素的个数
(3)ndim:数组的维数
(4)shape:数组的维度大小(元组形式)
(5)dtype:数组元素的数据类型
3、ndarray——数据类型
(1)布尔型:bool_
(2)整型:int_ int8 int16 int32 int64
(3)无符号整型:uint8 uint16 uint32 uint64
(4)浮点型:float_ float16 float32 float64
(5)复数型:complex_ complex64 complex128