numpy reshape函数_python数据分析工具 | numpy

Python中没有提供数组功能,虽然列表可以完成基本的数组功能,但并不是真正的数组,而且在数据量较大时,使用列表的速度回非常慢。因此,Numpy提供了真正的数组功能,以及对数据进行快速处理的函数。Numpy内置函数处理数据的速度是C语言级别的,因此,尽量使用其内置函数。

numpy安装

Numpy安装和普通的第三方库安装一样,最常用的就是利用 pip 安装:

pip install numpy

如果你想做数据分析的话,还是建议安装 anaconda(Windows、macOS、Linux均可使用) ,它是一个集成环境,包含了conda、Python在内的超过180个科学包及其依赖项,几乎所有你用到的库都已经帮你安装好了,同时如果需要其他的第三方库要安装,可以使用其中的 conda 便捷的安装相应库以及依赖。

Numpy基本操作

基本属性

numpy包含很多自己的属性和方法,下面通过一个栗子说明一下几个它自身的重要属性。

965d18005881272821480c4cf892a828.png

创建数组

import numpy as npdata = np.array([[1, 2, 3], [4, 5, 6]])  # 创建二维数组

上面是最基本的创建数组方法,但是对于实际应用中,它内置的一些函数更为实用。例如:

44b68632904e3ed60f8bae23ac9e6436.png

下面举例展示一下其中部分用法:

a3862358b39f5f00b8298623c6ded061.png

基本操作

Numpy的一个显著特点就是它的矢量化,使得对其操作是面向整个数组而不是各个元素,这就省去了很多开销,具体实现交给更加高效的C来做。矢量化对每个元素执行相同的操作,例如常见的加减乘除等。

e0e0d6f653516b8bad902deebd25a09f.png

特殊的,numpy中的“*”是数乘(按元素运算),矩阵乘法用dot函数来表示,表示为 c.dot(d)。

numpy还有很多常用的内置方法,例如求和等。

import numpy as npnp.random.random((2, 3))  # 创建一个元素值为0-1之间的随机数的 2*3 的矩阵data = np.array([2, 3, 4, 6, 1, 7, 9])data.sum()  # 求数组所有元素的和data.max()  # 求数组中最大值data.min()  # 求数组中最小值# 除此之外还包括下面这些常用函数# prod 积  mean 平均数  std 标准差  var 方差  argin 最小值索引  argmax 最大值索引  median 中位数  any 至少一个为真  all 所有元素为真

上述操作的对象为一维数组,那么对于二维或者多维数组来说,也有一些常用的操作。多维数组可以通过手动创建(np.array),或者通过内置函数设置数组结果(np.zeros等),除此之外还有一个特殊的方法,就是利用 reshape 修改数组的结构。上述的求和,求极值等方法在多维数组中也可以通过设置 axis 参数来灵活操作。axis表示多维数组中的轴。

4444f7d5473fd41bdb9943ba3ffb595c.png

说到 reshape ,那就集中说一下数组的变形

data.reshape((x, y))  # 将原数组变为x行y列data.resize((x, y))     # resize与reshape不同之处在于,resize改变数组本身data.ravel()               # 将多维数组展平为一维data.T                       # 将数组转

数组的索引切片。至于索引切片操作,其实是和python中的列表一致的,不赘述。

data[x:y:z] # 表示从下标 x 到 y-1 中按步长 z 取元素

广播也是numpy中常用的知识。

43237acc5950981e52bd1b93370b1421.png

也许比较抽象,画图说明一下。

bc01c95b2321605c9c701a83b59c1ce6.png

图中A为2*3的矩阵,B是一维的,若要相加必须调整为相同结构。根据第一条规则,在左侧再添加维度得B(1,3),根据规则二,将对应维度上的元素为一的补齐,则完全复制一份B拼接在下面,形成维度相同的两个矩阵再进行相加运算。若将所有大小为1的维度补齐后,两数组仍维度不同,那么不能进行计算。给个例子大家可以琢磨一下:A(2,5),B(3),最终column分别为5和3,则维度不同。

本文版权归作者(小田学Python)所有,欢迎转载,请保留原文链接。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值