【numpy2】python计算BMI指数、numpy(数组、数据类型、常用属性、常见方法、索引与切片、比较运算符、基本函数、必会函数、随机数模块、赌场案例)

1 python计算BMI指数
2 numpy中数组的概念
3 numpy的数据类型
4 numpy的常用属性
5 numpy的常见方法
6 numpy的索引与切片
7 numpy的比较运算符
8 numpy的基本函数
8.1 numpy的必会函数
8.2 numpy的随机数模块
9 numpy的赌场案例

1 python计算BMI指数

# 身高
height = [170,173,178,180,183]
# 体重
weight = [76,65,70,77,75]
'''求BMI指数:身体质量指数=体重(KG)/身高(m)的平方'''

# 不需要使用numpy 就用python计算上述五个人的BMI指数
res = list(zip(height,weight))

for data in res:
    bmi = data[1]/(data[0]/100)**2
    print(bmi)

2 numpy中数组的概念

import numpy as np

"""
如何在notebook环境下执行下载模块的命令?
	只需要在下载模块的语句前面加上一个感叹号即可
	!pip3 install requests
"""
# 数组的概念
# 创建数组的语法结构  np.array(列表/元祖)
一维数组
	np.array([1,2,3,4])/np.array((1,2,3,4))
	# 结果都是:array([1, 2, 3, 4])
 
二维数组
np.array([
    [1,2,3,4],
    [5,6,7,8]
])
# 结果是:array([[1, 2, 3, 4],[5, 6, 7, 8]])

三维数组
np.array([[[1,2,3],[4,5,6],[7,8,9]]])
# 结果是:array([[[1, 2, 3],[4, 5, 6],[7, 8, 9]]])

"""
二维数组使用最为频繁
其次是一维数组
三维数组基本不用
"""

总结:numpy中很多数学操作都需要依赖于数组对象
  	所以我们周一的案例中需要先将python的列表转换成numpy中的数组之后再计算

3 numpy的数据类型

# 由于numpy主要是用于计算,所以numpy数据类型以数字类型为主
'''为了不跟python里面数据类型关键字冲突,numpy最所有冲突的关键字后面加下划线'''
1.布尔型:bool_
2.整型:int_,int32,int64
  	无符号整型	uint8 uint16 uint32 uint64	
    # 回想MySQL:unsigned
3.浮点型:float_,float32,float64
4.复数型:complex_,complex64,complex128
  
 针对数字类型后面的数字如何理解
			int32只能表示(-2**312**31-1),因为它只有32个位,只能表示2**32个数

4 numpy的常用属性

1.T	转置(行列数互换)
		res = np.array([[11,22,33,44],[55,66,77,88]])
        array([[11, 22, 33, 44],
           [55, 66, 77, 88]])
    res.T
        array([[11, 55],
           [22, 66],
           [33, 77],
           [44, 88]])
      
2.dtype(类似于python中的type方法 用于查看数据类型)
		res
        array([[11, 22, 33, 44],
         [55, 66, 77, 88]])
    res.dtype
    		dtype('int64')
   
3.size(统计数组内元素的个数)
4.ndim(数组的维数)
5.shape(获取数组的行数和列表  结果是一个元祖)
6.reshape(修改数组行列数)		了解
		a = np.array([[1,2,3],[4,5,6]]) 
  	b = a.reshape(3,2)  
  	print (b)
  	[[1, 2] 
  	 [3, 4] 
  	 [5, 6]]

补充(重要)

针对numpy数组中的元素
	1.数组内元素必须是同一类型(哪怕定义的时候故意捣乱内部也会自动统一)
  		r2 = np.array([1,1.1,True])
    			array([1. , 1.1, 1. ])
     	r3 = np.array([1,1.1,False])
      		array([1. , 1.1, 0. ])
        
如何查看方法的使用说明   
		针对python代码我们可以使用pycharm快捷键来查看
  		crtl + 鼠标左键
    针对notebook环境下如何查看相关提示
    	1.在方法名的后面
      		先按shift键不松开的情况下按tab键即可
      2.在方法名的后面加一个问号
      		直接执行代码即可
 # 上述方法非常的好用,当你不知道一些内置方法的使用情况下基本都可以通过上述方式解决

5 numpy的常见方法

# np.常见方法名()
1.array()
	创建数组
2.arange()	
	range的numpy版
'''下面的方法了解即可'''
3.linspace()
	与arange一致,只不过该方法顾头又顾尾
4.zeros()	根据指定形状和dtype创建全0数组	
	np.zeros((3,4))
5.ones()	根据指定形状和dtype创建全1数组	
	np.ones((3,4))
6.empty()	根据指定形状和dtype创建空数组(随机值)	
	np.empty(10)
7.eye()	根据指定边长和dtype创建单位矩阵
	np.eye (5)

6 numpy的索引与切片

1.针对一维数组索引与切片的使用方式与python中的列表一致
		res = np.array([11,22,33,44,55,66])
  			array([11, 22, 33, 44, 55, 66])
   	res[1]
  			22
   	res[2:-1]
  			array([33, 44, 55])
      
2.针对多维数组有行索引和列索引之分,与我们之前学习的略有不同
			res[行索引,列索引]
  		# 如果行或者列都要,那么需要用冒号代替
    	res1[:,1:3]  # 行都要 列只要索引1和2
      
      array([[11, 22, 33, 44],
       [55, 66, 77, 88],
       [12, 23, 34, 45]])
      res1[1:3,1:3]
            array([[66, 77],
             [23, 34]])

7 numpy的比较运算符

	>
		等价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的元素

8 numpy的基本函数

# 常用的数学函数
	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为底各元素的对数

8.1 numpy的必会函数

# 常用的统计函数(必会)
	np.min(arr,axis)
  	按照轴的方向计算最小值
  np.max(arr,axis)
  	按照轴的方向计算最大值
  np.mean(arr,axis)
  	按照轴的方向计算平均值
  np.median(arr,axis )
  	按照轴的方向计算中位数
  np.sum(arr,axis)
  	按照轴的方向计算和
  np.std(arr,axis)
  	按照轴的方向计算标准差
  np.var(arr,axis)
  	按照轴的方向计算方差

"""
在上述统计函数中,参数axis用来控制行列
	axis=1	表示行
	axis=0  表示列
"""

8.2 numpy的随机数模块

1.在python中有有一个random模块
2.在numpy中有np的子模块random

numpy中的random子模块
np.random

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

"""复习python模块random如何生成随机验证码"""

9 numpy的赌场案例

jason有10000块钱,去某赌场嗨皮
假设输赢概率都是50%,并且赢一场赚100,输一场亏100
jason总共玩了1500场
问最后的金额如何估算???
# 总钞票数
money = 10000
res = ['输','赢']
# 判断输赢
for i in range(1500):
    if random.choice(res) == '输':
        money -= 100
    else:
        money += 100
print(money)


记录每一次jason的总钞票数并绘制折线图
'''记录每一次赌局完成后的钞票数'''
money = 10000
pgs = [money]  # 记录每一次输赢之后的总钱数
res = ['输','赢']
# 判断输赢
for i in range(1500):
    if random.choice(res) == '输':
        money -= 100
    else:
        money += 100
    pgs.append(money)
'''提前搂一眼后面会详细讲解的matplotlib模块'''
import matplotlib.pyplot as plt
plt.plot(range(1501),pgs)  # x轴与y轴坐标数据
plt.show()

你可能感兴趣的:(数据分析,python,numpy,开发语言)