python扩展库numpy入门教程

目录
  • 一、numpy是什么?
  • 二、numpy数组
    • 2.1 数组使用
    • 2.2 创建数组
      • 1. 使用empty创建空数组
      • 2. 使用arange函数创建
      • 3. 使用zeros函数生成数组
      • 4. ones函数生成数组
      • 5. diag函数生成对角矩阵
      • 6. N维数组
    • 2.3 访问数组元素
  • 三、了解矩阵
    • 3.1 广播

一、numpy是什么?

扩展库numpy是Python支持科学计算的重要扩展库,是数据分析和科学计算领域如scipy、pandas、sklearn 等众多扩展库中的必备扩展库之一,提供了强大的N维数组及其相关运算、复杂的广播函数、C/C++和Fortran代码集成工具以及线性代数、傅里叶变换和随机数生成等功能。本章童点介绍数组与矩阵及其相关运算,为学习和理解后面章节中的数据分析、机器学习打下良好的基础。

简单来说就是你用来为人工智能领域打基础的东西,私话说得好,基础不牢,地动山摇嘛~

所以这个地方可要好好学习哦~~

二、numpy数组

在numpy中使用的不是python自带的数据类型list,而是numpy中的ndarray

那为什么使用ndarray而不是使用list呢?

因为ndarray是由c/c++写出来的,占用内存更小,使用速度更快

创建一个ndarray的方法有很多,这里说下使用array方法转化的

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: Smly
# @datetime: 2021/9/26 22:22
# @Version: 1.0

import numpy as np

li = [1, 2, 3]
tp = (1, 2, 3)

nday1 = np.array(li)
nday2 = np.array(tp)

print("*****类型*****")
print(type(nday1))
print(type(nday2))

print("*****数组*****")
print(nday1)
print(nday2)

输出结果:

*****类型*****
<class 'numpy.ndarray'>
<class 'numpy.ndarray'>
*****数组*****
[1 2 3]
[1 2 3]

2.1 数组使用

如果元素相同的话,可以进行加减乘除

在元素个数相同的情况下,可以进行数组间的加减

在元素个数相同的情况下,可以进行数组间的乘除

对某个数进行的乘除,可以自动进行到所有元素

看例子理解:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: Smly
# @datetime: 2021/9/26 22:22
# @Version: 1.0
import numpy as np
li = [1, 2, 3]	# 列表
tp = (1, 2, 3)	# 元组
nday1 = np.array(li)	# 内置方法将列表转为ndarray
nday2 = np.array(tp)	# 内置方法将元组转为ndarray
nday3 = np.array(range(5)) # 使用range内置函数方法生成ndarray连续数组
nday4 = np.array(range(5, 10))  # 使用range内置函数方法生成ndarray连续数组
print("*****类型*****")
print(type(nday1))
print(type(nday2))
print(type(nday3))
print(type(nday4))
print("*****数组*****")
print(nday1)
print(nday2)
print(nday3)
print(nday4)
print("*****数组加减*****")
print(nday2 + nday1)
print(nday2 - nday1)
print(nday4 - nday3)
print(nday3 + nday4)
# 在元素个数相同的情况下,可以进行数组间的加减
print("*****数组乘除*****")
print(nday2 * nday1)
print(nday2 // nday1)
print(nday4 * nday3)
print(nday4 // nday3)
# 在元素个数相同的情况下,可以进行数组间的乘除
print(nday1 * 3)
print(nday2 // 2)
print(nday3 * 2)
print(nday4 // 2)
# 对某个数进行的乘除,可以自动进行到所有元素

运行结果:

*****类型*****
<class 'numpy.ndarray'>
<class 'numpy.ndarray'>
<class 'numpy.ndarray'>
<class 'numpy.ndarray'>
*****数组*****
[1 2 3]
[1 2 3]
[0 1 2 3 4]
[5 6 7 8 9]
*****数组加减*****
[2 4 6]
[0 0 0]
[5 5 5 5 5]
[ 5  7  9 11 13]
*****数组乘除*****
[1 4 9]
[1 1 1]
[ 0  6 14 24 36]
[0 0 0 0 0]
[3 6 9]
[0 1 1]
[0 2 4 6 8]
[2 3 3 4 4]

2.2 创建数组

刚刚的array()方法是将列表和元组等迭代对象转为ndarray数组

接下来要说的是自动创建数组

1. 使用empty创建空数组

里面会有初始值,但是数组初始为None

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: Smly
# @datetime: 2021/9/28 12:29
# @Version: 1.0
import numpy as np
em1 = np.empty(5)       # 创建一个长度为5的空数组
em2 = np.empty((2, 2))  # 创建一个2*2的空二维数组

print("一维数组,长度为5", em1)
print("二维数组,长度为2*2", em2)

输出结果:

[9.96754604e-312 9.96754614e-312 2.60799828e-310 9.34609789e-307
 0.00000000e+000]
[[6.95299778e-310 9.96747617e-312]
 [0.00000000e+000 6.95299776e-310]]

2. 使用arange函数创建

arange是numpy自带的的一个方法,作用与range这个Python内置函数相差无几,都是生成数组

先导入numpy包

import numpy as np

然后创建数组

print("*****ararge创建数组*****")

aran_arr1 = np.arange(5)
aran_arr2 = np.arange(5, 10)

print("*****类型*****")
print(type(aran_arr1))
print(type(aran_arr2))

print("*****数组*****")
print(aran_arr1)
print(aran_arr2)

3. 使用zeros函数生成数组

zeros函数是numpy自带的方法,作用是生成指定数量的全0一维数组,全0二维数组等

看下面的例子:

生成一个具有三个元素的一维数组和一个具有五个元素的一维数组:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: Smly
# @datetime: 2021/9/27 21:31
# @Version: 1.0

import numpy as np
zero_arr = np.zeros(3)
zrro_arr2 = np.zeros(5)
print(zero_arr)
print(zrro_arr2)

运行结果:

[0. 0. 0.]
[0. 0. 0. 0. 0.]

当然这只是一位数组,你还可以生成二维数组,也就是矩阵

使用如下代码可以生成一个三行三列的矩阵

zero_arr3 = np.zeros((3, 3))

输出看看:

print(zero-arr3)

运行结果:

[[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]

4. ones函数生成数组

使用ones函数生成全1函数,方法同zeros

import numpy as np

ones_arr1 = np.ones(3)

输出结果:

[1. 1. 1.]

生成一个三行三列的矩阵

import numpy as np

ones_arr2 = np.ones((3, 3))

输出结果:

[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]

5. diag函数生成对角矩阵

什么是对角矩阵?你应该听说过对角线,矩阵就是生成在对角线上的矩阵

函数参数是一个元祖

看代码和运行结果能够理解的更深刻

import numpy as np

diag_arr = np.diag((4, 3, 2, 1))

将diag_arr的输出的结果为:

[[4 0 0 0]
 [0 3 0 0]
 [0 0 2 0]
 [0 0 0 1]]

看,对角线是不是你函数的参数,这下理解了吧

6. N维数组

N维数组就是多维数组,可以理解为数组里面还是数组,里面还是数组,可以参照这个形式

[[[1 2]
  [3 4]]
 [[5 6]
  [7 8]]]

这个概念确实有点抽象,有点难理解。这就是一个三维数组,是通过三维列表使用array方法转换成ndarray的

代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: Smly
# @datetime: 2021/9/27 13:29
# @Version: 1.0
import numpy as np

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

当然,二维数组也算是N维数组

2.3 访问数组元素

numpy自带了一个insert函数,可以往数组中插入元素

看实例:

li = [[1, 2, 3, 4], [5, 6, 7, 8], [2, 4, 6, 8]]
gb1 = np.array(li)
np.insert(gb1, 1, [1, 2, 3, 4])

输出结果:

[1 1 2 3 4 2 3 4 5 6 7 8 2 4 6 8]

还有一个自带的add函数,可以进行数组的相加减

数组嘛,可以使用下标来获取数组元素

import numpy as np

li1 = [1, 2, 3, 4]
gb2 = np.array(li1)
print(gb2[1])

输出结果为:

2

当然,它是一个数组,你理所应当的也可以使用循环语句来遍历数组

三、了解矩阵

数组是数组,矩阵是矩阵。

数组是一种数据结构,可以存储多种数据,可以有多维

矩阵是数学中的一个概念,只能存放数字,并且只能是二维的形式

生成矩阵的方法就和生成N维数组的方法是一样的

先使用列表创建二维列表,然后再使用numpy的方法转成矩阵,当然也有好几中生成矩阵的方法

import numpy as np
li = [[1, 2, 3, 4], [5, 6, 7, 8]]
j1 = np.matrix(li)
print(j1)
print(type(j1))
print(j1.dtype)

输出该矩阵:

输出矩阵: [[1 2 3 4]
 [5 6 7 8]]
矩阵在Python的类型: <class 'numpy.matrix'>
在numpy中的类型: int32

矩阵可以进行各种数学运算,在numpy中都得到了很好的支持,这里就不细说了

3.1 广播

何为广播,广播就是能将你的东西发送到各个区域,一般在计算机中是将信息发送到局域网络中的每个计算机中。

而在numpy中也有广播,只不过他是将元素自动补到数组,矩阵上,就像你在上面看到的,一个数组乘除一个元素,数组中的所有元素都会乘这个数

import numpy as np

li1 = [1, 2, 3, 4]
print(np.array(li1)*10)

输出结果:

[10 20 30 40]

这个就是广播,就是将数字10播到li转成的数组中,能够让数组所有元素都乘10。

而不同维度的数组也可以这样

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: Smly
# @datetime: 2021/9/27 13:40
# @Version: 1.0
import numpy as np
li = [[1, 2, 3, 4], [5, 6, 7, 8], [2, 4, 6, 8]]
gb1 = np.array(li)
li1 = [1, 2, 3, 4]
gb2 = np.array(li1)
print(gb1*gb2)

将一维数组的每个元素挨个广播到二维数组,前提是:

二维数组中的一维数组的个数与一维数组的个数是相同的

运行结果:

[[ 1  4  9 16]
 [ 5 12 21 32]
 [ 2  8 18 32]]

以上就是python扩展库numpy入门教程的详细内容,更多关于numpy库入门的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python中的Numpy入门教程

    1.Numpy是什么 很简单,Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,其一般与Scipy.matplotlib一起使用.其实,list已经提供了类似于矩阵的表示形式,不过numpy为我们提供了更多的函数.如果接触过matlab.scilab,那么numpy很好入手. 在以下的代码示例中,总是先导入了numpy: 复制代码 代码如下: >>> import numpy as np>>> print np.version.version1.6.2

  • Python 机器学习库 NumPy入门教程

    NumPy是一个Python语言的软件包,它非常适合于科学计算.在我们使用Python语言进行机器学习编程的时候,这是一个非常常用的基础库. 本文是对它的一个入门教程. 介绍 NumPy是一个用于科技计算的基础软件包,它是Python语言实现的.它包含了: 强大的N维数组结构 精密复杂的函数 可集成到C/C++和Fortran代码的工具 线性代数,傅里叶变换以及随机数能力 除了科学计算的用途以外,NumPy也可被用作高效的通用数据的多维容器.由于它适用于任意类型的数据,这使得NumPy可以无缝和

  • Python Numpy库常见用法入门教程

    本文实例讲述了Python Numpy库常见用法.分享给大家供大家参考,具体如下: 1.简介 Numpy是一个常用的Python科学技术库,通过它可以快速对数组进行操作,包括形状操作.排序.选择.输入输出.离散傅立叶变换.基本线性代数,基本统计运算和随机模拟等.许多Python库和科学计算的软件包都使用Numpy数组作为操作对象,或者将传入的Python数组转化为Numpy数组,因此在Python中操作数据离不开Numpy. Numpy的核心是ndarray对象,由Python的n维数组封装而来

  • 新手入门学习python Numpy基础操作

    NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.是在学习机器学习.深度学习之前应该掌握的一个非常基本且实用的Python库. 导入库,创建数组 import numpy as np a = np.arraya = np.array([0, 1, 2, 3, 4] ) #使用array函数 a = np.array([[11, 12, 13, 14, 15], [16, 17, 18, 1

  • python扩展库numpy入门教程

    目录 一.numpy是什么? 二.numpy数组 2.1 数组使用 2.2 创建数组 1. 使用empty创建空数组 2. 使用arange函数创建 3. 使用zeros函数生成数组 4. ones函数生成数组 5. diag函数生成对角矩阵 6. N维数组 2.3 访问数组元素 三.了解矩阵 3.1 广播 一.numpy是什么? 扩展库numpy是Python支持科学计算的重要扩展库,是数据分析和科学计算领域如scipy.pandas.sklearn 等众多扩展库中的必备扩展库之一,提供了强大

  • Python 数据处理库 pandas 入门教程基本操作

    pandas是一个Python语言的软件包,在我们使用Python语言进行机器学习编程的时候,这是一个非常常用的基础编程库.本文是对它的一个入门教程. pandas提供了快速,灵活和富有表现力的数据结构,目的是使"关系"或"标记"数据的工作既简单又直观.它旨在成为在Python中进行实际数据分析的高级构建块. 入门介绍 pandas适合于许多不同类型的数据,包括: 具有异构类型列的表格数据,例如SQL表格或Excel数据 有序和无序(不一定是固定频率)时间序列数据.

  • Python 数据处理库 pandas进阶教程

    前言 本文紧接着前一篇的入门教程,会介绍一些关于pandas的进阶知识.建议读者在阅读本文之前先看完pandas入门教程. 同样的,本文的测试数据和源码可以在这里获取: Github:pandas_tutorial. 数据访问 在入门教程中,我们已经使用过访问数据的方法.这里我们再集中看一下. 注:这里的数据访问方法既适用于Series,也适用于DataFrame. 基础方法:[]和. 这是两种最直观的方法,任何有面向对象编程经验的人应该都很容易理解.下面是一个代码示例: # select_da

  • Python 绘图库 Matplotlib 入门教程

    运行环境 由于这是一个Python语言的软件包,因此需要你的机器上首先安装好Python语言的环境.关于这一点,请自行在网络上搜索获取方法. 关于如何安装Matplotlib请参见这里:Matplotlib Installing. 笔者推荐大家通过pip的方式进行安装,具体方法如下: sudo pip3 install matplotlib 本文中的源码和测试数据可以在这里获取:matplotlib_tutorial 本文的代码示例会用到另外一个Python库:NumPy.建议读者先对NumPy

  • 音频处理 windows10下python三方库librosa安装教程

    librosa是处理音频库里的opencv,使用python脚本研究音频,先安装三方库librosa. 如下通过清华镜像源安装librosa: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple librosa D:\D00_Python3\D00A2_python3.7.3\install>pip install -i https://pypi.tuna.tsinghua.edu.cn/simple librosa   Looking

  • Python之Sklearn使用入门教程

    1.Sklearn简介 Scikit-learn(sklearn)是机器学习中常用的第三方模块,对常用的机器学习方法进行了封装,包括回归(Regression).降维(Dimensionality Reduction).分类(Classfication).聚类(Clustering)等方法.当我们面临机器学习问题时,便可根据下图来选择相应的方法.Sklearn具有以下特点: 简单高效的数据挖掘和数据分析工具 让每个人能够在复杂环境中重复使用 建立NumPy.Scipy.MatPlotLib之上

  • python Tkinter的简单入门教程

    我们将编写一个英尺和米的转换程序,通过这个程序,我们将会了解一个真正的实用程序该怎么设计和编写,我们也将会了解到 Tk 程序内部的基本样子.不必完全掌握里面的所有知识,更多细节将会在之后的章节中讲到.本节仅要求了解即可,使读者明白如何设计和编写一个 Tk GUI 程序. 设计 我们将要写一个简单的将英尺(feet)转换为米(me­ters)的 GUI 工具,按照我们的经验,它应该长成下面那个样子: 这个程序会有一个输入框用来输入英尺数,还将会有一个显示框用来显示被转换之后的数字,几个用于显示提示

  • Python机器学习库scikit-learn入门开发示例

    目录 1.数据采集和标记 2.特征选择 3.数据清洗 4.模型选择 5.模型训练 6.模型测试 7.模型保存与加载 8.实例 数据采集和标记 特征选择 模型训练 模型测试 模型保存与加载 1.数据采集和标记 先采集数据,再对数据进行标记.其中采集数据要就有代表性,以确保最终训练出来模型的准确性. 2.特征选择 选择特征的直观方法:直接使用图片的每个像素点作为一个特征. 数据保存为样本个数×特征个数格式的array对象.scikit-learn使用Numpy的array对象来表示数据,所有的图片数

随机推荐