Python数据分析必备工具——Numpy模块


我们知道,列表是一种数据的存储容器,但它不具有任何计算能力,我们无法直接用列表进行运算。虽然我们可以通过逐渐取出列表中的元素,也就是利用循环进行运算,但是有更好的操作,那就是利用数组。

数组定义

数组是编程中一种强大的数据结构,它允许您存储和操作相同类型元素的集合。在 Python 中,数组是通过数组模块创建的,该模块提供了一个简单的接口来创建、操作和处理数组。特别的:矩阵是一种二维数组。

一维数组

# 导入功能包
import numpy as np

height = [176,158,172,177,169,180]
weight = [82,61,70,70,89,90]
# 将列表转换成数组(借助于array函数可以将列表或元组转换为数组)
Height = np.array(height)
Weight = np.array(weight)
# 计算BMI
BMI = Weight/(Height/100)**2
print(BMI)

输出:

[26.47210744 24.43518667 23.66143862 22.34351559 31.1613739 27.77777778]

并且利用数组的方式,相比于循环的速度更快。

二维数组

import numpy as np

# 基于嵌套列表创建二维数组
arr1 = np.array([[1,3,5,7],
 [2,4,6,8],
 [11,13,15,17],
 [12,14,16,18],
 [100,101,102,103]])
# 基于嵌套元组创建二维数组
arr2 = np.array(((8.5,6,4.1,2,0.7),(1.5,3,5.4,7.3,9),
 (3.2,3,3.8,3,3),(11.2,13.4,15.6,17.8,19)))
# 二维数组的打印结果
print(arr1,'\n')
print(arr2)

输出:
在这里插入图片描述

数组的构造

数组元素的返回
1)在一维数组中,列表的所有索引方法都可以使用在数组中,而且还可以使用间断索引和逻辑索引;
2)在二维数组中,位置索引必须写成[rows,cols]的形式,方括号的前半部分用于锁定二维数组的行索引,后半部分用于锁定数组的列索引;
3)如果需要获取二维数组的所有行或列元素,那么,对应的行索引或列索引需要用英文状态的冒号表示;

import numpy as np
# 一维数组
age = np.array([13,19,22,14,19,45])
print(age[-1],age[:3],age[[0,3,5]],age[age<18])
# 二维数组
arr1 = np.array([[1,3,5,7],
 [2,4,6,8],
 [11,13,15,17],
 [12,14,16,18],
 [100,101,102,103]])
# 假如我们取出18,对行无约束取出第四列,对列无约束取出第四行
print(arr1[3,3], arr1[:,3], arr1[3,:])

输出:

45 [13 19 22] [13 14 45] [13 14]
18 [ 7 8 17 18 103] [12 14 16 18]

数组运算符

注意:两个数组必须相同的行与列

数学运算

在这里插入图片描述
在这里插入图片描述

比较运算(可以用符号也可以用函数)

在这里插入图片描述

统计函数

在这里插入图片描述
例子:

import numpy as np
# 二维数组
arr1 = np.array([[1,3,5,7],
 [2,4,6,8],
 [11,13,15,17],
 [12,14,16,18],
 [100,101,102,103]])
# 计算每一行的和
Sum = []
Sum1 = []
for i in range(5):
    Sum.append(np.sum(arr1[i,:]))
Sum1 = np.sum(arr1, axis=1)
print(Sum, Sum1)

# 计算每一列的平均
Avg = []
Avg1 = []
for i in range(4):
    Avg.append(np.average(arr1[:,i]))
Avg1 = np.mean(arr1, axis=0)
print(Avg, Avg1)

输出:

[16, 20, 56, 60, 406] [ 16 20 56 60 406]
[25.2, 27.0, 28.8, 30.6] [25.2 27. 28.8 30.6]

随机生成函数

import numpy as np
# 随机整数
np.random.randint()
# 随机均匀分布
np.random.uniform()
# 随机正态分布
np.random.normal()

例子:理想赌场下的结局

# 导入功能包
import numpy as np
# 生成0-1之间的随机均匀分布
R = np.random.uniform(0,1,1500)
# 初始钱
initial = 1000
# 钱包变化存储
packages=[initial]
# 循环赌局
for time in R:
    if time<0.5:
        initial-=8
    else:
        initial+=8
    packages.append(initial)
print(packages)

# 我们可以利用matplotlib功能包进行数据可视化(我们后面细讲)
import matplotlib.pyplot as plt
plt.plot(range(1501),packages)
plt.show()

输出:
在这里插入图片描述

  • 9
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啥都鼓捣的小yao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值