美文网首页
Numpy库简介

Numpy库简介

作者: 苍简 | 来源:发表于2019-02-28 21:08 被阅读53次

转载自公众号:PythonCircle

今天给大家分享一个数据分析处理数据的常见的库:Numpy。这个库是 Python 数据分析的基础,它提供的数据结构比 Python 自身的更高效。我们知道 Python 有自带的列表数据结构。Numpy 库和 list 列表有什么区别呢?

python list 列表保存的是对象的指针,比如 [0,1,2] 需要保存 3 个指针和 3 个整数的对象,这样就很浪费内存了。

那 Numpy 是怎么存数据的呢?Numpy 是储存在一个连续的内存块中,节约了计算资源。

小技巧

避免采用隐式拷贝,多用就地操作,比如你想打印 5 个 b,有两种方法:

# 方法1b = 5b*=5print(b)# 方法2b = 5a=b*5print(a)
两种方法结果是一样的,但是性能相差很大,方法 1 性能更优,上篇文章讲到的性能方面和这类似 image

为什么你的代码执行起来耗时较长?

Numpy 库安装

直接使用 pip 命令安装,简单方便。

pip install numpy

ndarray对象

NumPy 数组的维数称为秩(rank),一维数组的秩为 1,二维数组的秩为 2,以此类推。在 NumPy 中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量。比如说,二维数组相当于是一个一维数组,而这个一维数组中每个元素又是一个一维数组。所以这个一维数组就是 NumPy 中的轴(axes),而轴的数量——秩,就是数组的维数。

ndarray 内部由以下内容组成:

  • 一个指向数据(内存或内存映射文件中的一块数据)的指针。

  • 数据类型 dtype,描述在数组中的固定大小值的格子。

  • 一个表示数组形状(shape)的元组,表示各维度大小的元组。

创建数组

import numpy as np

a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(a)

# 结果
[[1 2 3]
 [4 5 6]
 [7 8 9]]

用 shape 属性获得数组的大小。

import numpy as np

a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(a.shape)

# 结果
(3, 3)

更改数组的元素,把元素中 5 换成 0,直接用下标。

import numpy as np

a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
a[1, 1] = 0
print(a)

# 结果
[[1 2 3]
 [4 0 6]
 [7 8 9]]

通过 dtype 获得元素的属性。

import numpy as np

a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(a.dtype)

# 结果
int32

结构数组

比如我想统计一个班的学生姓名、语文、数学、英语成绩,当然我们可以通过下标来获取,当这样不够高效。用 Numpy 怎么操作呢?我们得先用 dtype 定义好自定义的数据结构。

import numpy as np

studenttype = np.dtype({
    'names': ['name', 'chinese', 'math', 'english'],
    'formats': ['S32', 'i', 'i', 'i']
})

然后我们用 array 定义真实数据的数组时,把 stype 元素属性定义为上面自定义的数据结构,这样就可以调用自定义的数据结构了。

students = np.array([('zhangsan', 85, 72, 56), ('lisi', 88, 90, 68),
                     ('wangwu', 78, 66, 88)], dtype=studenttype)

我们把需要的值全部取出来,这里我们取出全部的值。

name = students[:]['name']
chinese = students[:]['chinese']
math = students[:]['math']
english = students[:]['english']

数据提取出来之后我们就可以对数据进行处理了,比如,我们要求这三个学生各科成绩的平均值。在 Numpy 库中,mean() 用来求平均值。

print(np.mean(chinese))
print(np.mean(math))
print(np.mean(english))

# 结果
83.66666666666667
76.0
70.66666666666667

很多伙伴可能觉得很繁琐,但是这种通过自己自定义的数据结构更方便,特别是针对庞大的数据量,整理数据的能力也更高效。

ufun运算

ufun 是 universal function 的缩写,对数组中的每个元素进行函数式的操作,计算速度快,因为很多 ufun 函数都是采用 C 语言实现的。

创建连续数组

两种函数可以创建,第一种用 arange 函数创建,格式:arange(初始值,终值,步长),其中终值是开区间,不包括其值。

import numpy as np
b = np.arange(1, 8, 2)
print(b)

# 结果
[1 3 5 7]

第二种用 linspace 函数创建,格式:linspace(初始值,终值,元素个数),其中终值是闭区间,包括其值。

import numpy as np
b = np.linspace(1, 7, 4)
print(b)

# 结果
[1. 3. 5. 7.]

算法运算

可以对数组进行基本的加减乘除、取余运算。

加减乘除运算

用上面两个函数创建的数组举例。

import numpy as np
b = np.linspace(1, 7, 4)
c = np.arange(1, 8, 2)

print(np.add(b, c))          # 加法运算
print(np.subtract(b, c))     # 减法运算
print(np.multiply(b, c))     # 乘法运算
print(np.divide(b, c))       # 除法运算
print(np.mod(b, c))          # 取余运算

# 结果
[ 2.  6. 10. 14.]
[0. 0. 0. 0.]
[ 1.  9. 25. 49.]
[1. 1. 1. 1.]
[0. 0. 0. 0.]

计算数组中最大值、最小值、平均值,标准差、方差。

a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(a.max())      # 数组中最大值
print(a.min())      # 数组中最小值
print(a.mean())     # 数组中平均值
print(a.std())      # 数组中标准差
print(a.var())      # 数组中方差

# 结果
9
1
5.0
2.581988897471611
6.666666666666667

数据分析的基础库 Numpy 库的基本用法就介绍到这里。

相关文章

  • Numpy库简介

    转载自公众号:PythonCircle 今天给大家分享一个数据分析处理数据的常见的库:Numpy。这个库是 Pyt...

  • Python Scipy库

    Scipy库的简介 Scipy高级科学计算库:和Numpy联系很密切,Scipy一般都是操控Numpy数组来...

  • Numpy 基础

    Numpy 简介 Numpy 库是 Python 中科学计算的核心库。它提供了高性能的多维数组对象以及用于处理这些...

  • Python之NumPy详解(一)

    NumPy简介 NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的...

  • 科学计算库numpy学习 (一)

    一、numpy简介 Numpy全名叫Numeric Python,是一个开源的Python科学计算库,它包括: 一...

  • NumPy是一个Python库

    简介NumPy是一个Python库,用于对大型数据集进行数值计算。Numpy是Numerical Python的缩...

  • numpy库

    1 numpy库简介 numpy是高性能科学计算和数据分析的基础包; 2 ndarray ndarray是一个多维...

  • 矩阵数学和numpy 2018-01-25

    NumPy 简介 Python 很方便,但也会很慢。不过,它允许你访问执行用 C 等语言编写的代码的库。NumPy...

  • Python教程:进击机器学习(五)--Scipy

    Scipy简介 Scipy是一个高级的科学计算库,它和Numpy联系很密切,Scipy一般都是操控Numpy数组来...

  • Python数据分析(一):Numpy库学习

    一、Numpy简介 Numpy是python的科学计算库,支持高级大量的维度数组与矩阵运算,此外有针对数组运算提供...

网友评论

      本文标题:Numpy库简介

      本文链接:https://www.haomeiwen.com/subject/geqluqtx.html