numpy科学计算库

目录

  • numpy简介

  • numpy前戏

  • numpy数据结构

  • numpy数据类型

  • numpy其他功能

 

numpy简介

numpy是高性能科学计算和数据分析的基础包,也是pandas等其他数据分析的工具的基础
numpy具有多维数组功能,运算更加高效快速

下载模块

在notebook中如果需要执行pip命令下载模块

 或者在命令行的开头加上一个感叹号即可
 !pip3 install numpy

其他方式

在安装完anaconda之后该软件也会给我们提供一个下载模块的工具
# conda使用方式与pip一致

conda install numpy

导入模块

import numpy
import numpy as np  # 起别名np使用更广泛

演示一

# 身高
height = [170,173,178,180,183]
# 体重
weight = [76,65,70,77,75]

'''求BMI指数:身体质量指数=体重(KG)/身高(m)的平方'''
BMI = weight/(height/100)**2  # 报错

如何用python代码解决

 

 

 演示二

数据准备

import random
# 伪造数据
h = []
w = []
for i in range(100000000):
    h.append(random.randint(153,180))
    w.append(random.uniform(51,88))

小知识

notebook单元格左侧如果是星号表示当前单元格正在执行
是数字表示执行完毕

 

 

 1.纯python代码实现

import time
# for循环计算
start_time = time.time()
for i in range(100000000):
    w[i]/(h[i]/100) ** 2
end_time = time.time() - start_time
end_time

 

 

 2.numpy模块解决

import numpy as np
H = np.array(h)
W = np.array(w)
# 数组运算
start_time = time.time()
BMI = W/(H/100)**2
end_time = time.time() - start_time
end_time

 

 

 总结

# 使用numpy模块会比纯代码解决一些复杂的运算更加高效快速

 

多维数组

1.一维数组

 

 

 2.二维数组

 

 

 3.特别要领

# numpy中同一个数组内所有数据数据类型肯定是一致的
    np.array([1,2,False]) >>> array([1, 2, 0])
    np.array([1,2,3.1]) >>> array([1.,2.,3.1])

 

 

 

# numpy中进行数据操作的时候同一个数组内所有的数据都挨个对应参与操作
    a1 = np.array([1,2,3,4])
    a2 = np.array([7,8,9,1])
    a1 + a2 >>> array([ 8, 10, 12,  5])
    
    a1 * 10 >>> array([10, 20, 30, 40])

 

 

 

数据类型

1.布尔型    bool_    

2.整型 int_ int8 int16 int32 int64 # int32只能表示(-2**31,2**31-1),因为它只有32个位,只能表示2**32个数
3.无符号整型 uint8 uint16 uint32 uint64

4.浮点型 float_ float16 float32 float64

5.复数型 complex_ complex64 complex128

总结

1.numpy数据类型以数字居多是因为它主要用于科学计算,只有数字可以参与计算

2.numpy数据类型后面加下划线是为了跟python数据类型关键字区分开

 

常用属性

1.T

# 功能
数组的转置,就相当于是将行变成列,列变成行

 

 2.dtype

数组元素的数据类型

 

 3.size

数组元素的个数

4.ndim

数组的维数

5.shape

数组的维度大小(以元组形式)

 

 

常用方法

1.如何查看某个方法的使用说明

方式1:在方法后面跟问号执行即可
方式2:写完方法名后先按shift不松开然后按tab即可(shift+tab)
再次摁下tab显示全部说明

 

 2.array()

将列表转换为数组,可选择显式指定dtype

 

 

 3.arange()

range的numpy版,支持浮点数

 

 4.linspace()

类似arange(),第三个参数为数组长度    
    

总结
# 这个方法与arange有一些区别,arange是顾头不顾尾
# 这个方法是顾头又顾尾,在1到10之间生成的二十个数每个数字之间的距离相等的,前后两个数做减法肯定相等

 

 5.zeros()

根据指定形状和dtype创建全0数组

 

 6.ones()

根据指定形状和dtype创建全1数组

 

 7.empty()

根据指定形状和dtype创建空数组(随机值)

 

 8.eye()

根据指定边长和dtype创建单位矩阵

 

 

索引与切片

 1.针对一维数组 索引与切片操作跟python中的列表完全一致

 

 2.花式索引(间断索引)

 

 3.布尔值索引(逻辑索引)

 

 4.针对二维数组索引与切片

# res[行索引(切片),列索引(切片)]
如果需要获取二维数组的所有行或列元素
那么对应的行索引或列索引,需要用英文状态的冒号表示

 

res[3,3]  # 18

 

 

 

res[3,:]  # array([12, 14, 16, 18])
res[:,1]  # array([  3,   4,  13,  14, 101])

 

 

 

res[0:2,1:3]  # array([[3,5],[4,6]])

 

 

 

运算符

1.数学运算符

+  数组对应元素的加和
-  数组对应元素的差
*  数组对应元素的乘积
/  数组对应元素的商

%     数组对应元素商的余数
//    数组对应元素商的整除数
**    数组对应元素的幂指数

 

 

 2.比较运算符

>
        等价np.greater(arr1,arr2)
        判断arr1的元素是否大于arr2的元素
>=
        等价np.greater_equal(arr1,arr2)
        判断arr1的元素是否大于等于arr2的元素
<
        等价np.less(arr1,arr2)
        判断arr1的元素是否小于arr2的元素
<=
        等价np.less_equal(arr1,arr2)
        判断arr1的元素是否小于等于arr2的元素
==
        等价np.equal(arr1,arr2)
        判断arr1的元素是否等于arr2的元素
!=
        等价np.not_equal(arr1,arr2)
        判断arr1的元素是否不等于arr2的元素

 

 

 

函数

1.常用的数学函数

  np.round(arr)
      对各元素四舍五入
  np.sqrt(arr)
      计算各元素的算术平方根  
  np.square(arr)
      计算各元素的平方值
  np.exp(arr)
      计算以e为底的指数
  np.power(arr, α)
      计算各元素的指数
  np.log2(arr)
      计算以2为底各元素的对数
  np.log10(arr)
      计算以10为底各元素的对数
  np.log(arr)
      计算以e为底各元素的对数

 

 

 2.常用的统计函数

np.min(arr,axis)    按照轴的方向计算最小值

'''
  注意:
      axis=0时,计算数组各列的统计值 
      axis=1时,计算数组各行的统计值
  '''

  np.max(arr,axis)
      按照轴的方向计算最大值
  np.mean(arr,axis)
      按照轴的方向计算平均值
  np.median(arr,axis )
      按照轴的方向计算中位数
  np.sum(arr,axis)
      按照轴的方向计算和
  np.std(arr,axis)
      按照轴的方向计算标准差
  np.var(arr,axis)
      按照轴的方向计算方差

 

 

随机数

numpy中的random子模块

np.random

rand              给定形状产生随机数组(0到1之间的数)    
randint        给定形状产生随机整数    
choice         给定形状产生随机选择    
shuffle        与random.shuffle相同    
uniform        给定形状产生随机数组(随机均匀分布)
normal          随机正态分布    

 

 

 

posted @ 2021-10-13 22:12  陌若安然  阅读(143)  评论(0)    收藏  举报