python数据分析: numpy入门

穿精又带淫゛_ 提交于 2020-01-11 01:42:00

numpy的概念

  • 一个在python中做科学计算的基础库,重在数值计算,也是大部分在python科学计算库的基础库,多用于在大学、多维数组上执行数值运算。

numpy基础

import numpy as np
import random

# 创建数组
t1 = np.array([random.randint(2, 9) for i in range(10)])
t2 = np.arange(1, 6)
t3 = np.array(range(1, 10, 2))

print("t1:", t1)
print("t2:", t2)
print("t3:", t3)
print(type(t1))
print(t1.dtype)

# 指定数据的类型
t4 = np.array(range(1, 6), dtype="i1")
print("*"*30)
print(t4.dtype)
print(t4)

# numpy 中的bool类型
t5 = np.array([1, 0, 1, 1, 1, 0, 2, 3], dtype=bool)
print(t5)

# numpy更改数据类型
t6 = t5.astype("int64")  # 更改t5的数据类型
print(t6)
print(t6.dtype)

# numpy 中的小数
t7 = np.array([random.random() for i in range(10)])
print("=" * 100)
# 四舍五入
t8 = np.round(t7, 2)  # 将小数t7传入,保留两位小数
print(t8)

数组的形状

使用shape方法即可查看数组的形状, shape方法返回的是一个元组,一般来说,元组内有几个数字,就可以判断它是一个几维数组
从shape中所返回的值中可以看出t1是一个一维数组,shape中返回的元组第一个值为数组的个数,t2为一个二维数组,shape中返回的元组第一个值为数组的行数,第二个值为数组的列数
在这里插入图片描述
在这里插入图片描述

修改数组的形状

  • 利用shape方法可以查看数组的形状,那么使用reshape()函数则可以更改数组的形状
    这样我们把t1从一维数组改变为3行2列的二维数组了在这里插入图片描述

把数组转化一维数据

列如变量a = np.arange(15).reshape(3, 5)
a是一个3行2列的二维数组,那么应该怎么将它变为一维数据呢?
在这里插入图片描述

  • 第一种方法:使用reshape改变数组的形状
    在这里插入图片描述
  • 第二种方法:使用flatten()函数将数组展开
    在这里插入图片描述

数组的计算

就拿刚才的变量a作为例子,数组能够进行计算吗?那必须可以呀,不然还做什么数据分析…(手动滑稽)
首先a是这样的
在这里插入图片描述
首先进行一个简单的计算
在这里插入图片描述
可以看出当数组加一个数字时,数组中的每一个元素都加了这个数字,所以举一反三,数组也能够对数字进行加减乘除,这里就不做详细讲解了。
那么问题来了, 数组与数组之间能够计算吗?

  • 这里我构建了一个结构与a相同,但是元素不一样的二维数组b
    在这里插入图片描述
    然后把数组a与数组b相加
    a+b
    可以看出,数组与数组之间可以进行相加操作,且是数组之中每个元素对应相加。结论:当两个数组中的结构相同时,它们之间可以进行计算操作

接下来构建一个行数与a相同,列数不同的数组c,并验证它们是否能够相加
在这里插入图片描述
然后将数组c与数组a进行相加
在这里插入图片描述
结果是数组a与数组c中的对应行数的值相加, 由此可以得出结论:一个数组可以与另一个行数相同,但列数为1的数组进行相加

最后构建一个结构与列数都与a不相同的数组d
在这里插入图片描述
a + d, 验证是否能够相加,运行结果如下:
在这里插入图片描述
报了一个错误,报错原因是因为: 操作与形状不能一起被广播,所以得出结论:当两个数组形状与结构都不相同时,数组之间不能进行计算

广播原则

  • 如果两个数组的后缘维度(trailing dimension, 即从末尾开始算起的维度)的轴长度相符或其中一方的长度为1,则认为它们时广播兼容的。广播会在缺失和(或)长度为1的维度上进行
  • 怎么理解呢? 可以把维度指的是shape所对应的数字个数
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!