https://www.toutiao.com/a6670751745192231435/

Numpy是一个Python库/模块,在Python编程中用于科学计算。在本教程中,你将学习如何在Numpy数组上执行一系列操作,例如以多种方式添加、删除、排序和操作元素。

Numpy提供一个多维数组对象和其他派生数组,如掩码数组或掩码多维数组。

为什么使用Numpy?

Numpy模块提供一个ndarray对象,我们可以用这个对象来对任意维度的数组执行操作。ndarray代表N维数组,其中N是任意数字。这意味着Numpy数组可以是任意维度的数组。

与Python列表相比,Numpy有很多优点。我们可以对Numpy数组执行高性能操作,例如:

1. 数组成员排序

2. 数学和逻辑运算

3. 输入/输出功能

4. 统计和线性代数运算

如何安装Numpy?

想要安装Numpy,需要在电脑系统上安装Python和Pip。

在Windows操作系统上执行以下命令:

pip install numpy

现在可以像这样在脚本中导入Numpy:

import numpy

添加数组元素

你可以使用NumPy模块的append()方法添加一个NumPy数组元素。append的使用操作如下:

numpy.append(array, value, axis)

这些值将附加在数组的末尾,新的ndarray将与上面所示的新值和旧值一起返回。

axis是一个可选的整数,用于定义数组的显示方式。如果没有指定axis,数组结构将被展平,如你稍后将看到的一样。

请看下面的示例,首先创建一个数组,然后使用append方法向该数组添加更多值:

a = numpy.array([1, 2, 3])
newArray = numpy.append (a, [10, 11, 12])

添加列

使用Numpy的append()方法插入列。

请看下面的示例,创建了一个二维数组并插入了两列:

a = numpy.array([[1, 2, 3], [4, 5, 6]])
b = numpy.array([[400], [800]])
newArray = numpy.append(a, b, axis = 1)

如果未使用axis属性,则输出如下:

这就是数组结构的扁平化过程。

在NumPy中,还可以使用insert()方法插入元素或列。insert()和append()两种方法之间的区别在于我们在使用insert()方法时,可以指定要在哪个索引处添加元素,而append()方法则会在数组末尾添加一个值。

请看以下示例:

a = numpy.array([1, 2, 3])
newArray = numpy.insert(a, 1, 90)

这里,insert()方法在索引1处添加元素。请记住数组索引从0开始。

添加行

在本节中,我们将使用append()方法向数组添加行。此方法就像在数组中添加元素一样简单。请看以下示例:

a = numpy.array([[1, 2, 3], [4, 5, 6]])
newArray = numpy.append(a, [[50, 60, 70]], axis = 0)

删除元素

可以使用NumPy模块的delete()方法删除NumPy数组元素,以下示例对此进行了演示:

a = numpy.array([1, 2, 3])
newArray = numpy.delete(a, 1, axis = 0)

输出如下:

在上面的例子中,可以看到一个单维数组。delete()方法从数组中删除索引1处的元素。

删除行

同样,可以使用delete()方法删除行。

请看以下示例,从二维数组中删除了一行:

a = numpy.array([[1, 2, 3], [4, 5, 6], [10, 20, 30]])
newArray = numpy.delete(a, 1, axis = 0)

在delete()方法中,首先给出数组,然后给出要删除元素的索引。在上面的示例中,删除索引为1的第二个元素。

检查 NumPy 数组是否为空值

使用size方法得出数组中元素的总数。

在下面的示例中,我们将会使用一个if语句,该语句通过ndarray.size去检查数组中是否有元素,其中ndarray是任意给定的NumPy数组:

import numpy
a = numpy.array([1, 2, 3])
if(a.size == 0):
print("The given Array is empty")

其他:

print("The array = ", a)

输出如下:

在上面的代码中,有三个元素,因此这个数组不是空的,if条件将返回false。

如果没有元素,if条件将变为true,并将显示空白数组。

如果我们的数组等于:

a = numpy.array([])

上述代码的输出如下:

查找值的索引

使用Numpy模块的where()方法查找值的索引,如下例所示:

import numpy
a = numpy.array([1, 2, 3, 4, 5])
print("5 is found at index: ", numpy.where(a == 5))

Where()方法还将返回数据类型。如果你只想获取索引,请使用以下代码:

import numpy
a = numpy.array([1, 2, 3, 4, 5])
index = numpy.where(a == 5)
print("5 is found at index: ", index[0])

NumPy 数组切片

数组切片是从给定数组中提取子集的过程。可以使用冒号运算符对数组进行切片,并指定数组索引的起点和终点,例如:

array[from:to]

下面的示例突出了这点:

import numpy
a = numpy.array([1, 2, 3, 4, 5, 6, 7, 8])
print("A subset of array a = ", a[2:5])

这里我们提取索引2到索引5中的元素。输出将是:

如果想要提取最后三个元素,可以通过使用负片切片来完成此操作,如下所示:

import numpy
a = numpy.array([1, 2, 3, 4, 5, 6, 7, 8])
print("A subset of array a = ", a[-3:])

将函数应用于所有数组元素

在下面的示例中,我们将创建一个lambda函数,在该函数上传递数组以将其应用于所有元素:

import numpy
addition = lambda x: x + 2
a = numpy.array([1, 2, 3, 4, 5, 6])
print("Array after addition function: ", addition(a))

在此示例中,创建了一个lambda函数,它将每个元素递增2个值。

NumPy 数组长度

你可以通过使用NumPy模块的size属性来获取NumPy数组的长度,如下例所示:

import numpy
a = numpy.array([1, 2, 3, 4, 5, 6])
print("The size of array = ", a.size)

从列表中创建numpy数组

Python中的列表是方括号之间的多个元素。

假设有一个列表:

l = [1, 2, 3, 4, 5]

现在要根据这个列表创建一个数组,我们将使用NumPy模块的array()方法:

import numpy
l = [1, 2, 3, 4, 5]
a = numpy.array(l)
print("The NumPy array from Python list = ", a)

同样地,通过使用array()方法,我们可以根据元组创建一个NumPy数组。一个元组包含多个用圆括号括起来的元素,如下所示:

import numpy
t = (1, 2, 3, 4, 5)
a = numpy.array(t)
print("The NumPy array from Python Tuple = ", a)

将NumPy数组转换为列表

想要将数组转换为列表,我们可以使用NumPy模块的tolist()方法。

请看以下代码:

import numpy
a = numpy.array([1, 2, 3, 4, 5])
print("Array to list = ", a.tolist())

在这段代码中,我们简单地运用了能将数组转换为列表的tolist()方法。然后将新创建的列表打印到输出屏幕。

从NumPy 到CSV

使用NumPy模块的savetxt()方法将数组导出为CSV文件,如下例所示:

import numpy
a = numpy.array([1, 2, 3, 4, 5])
numpy.savetxt("myArray.csv", a)

代码将在Python代码文件存储位置生成一个CSV文件。 你还可以指定其路径。运行脚本时,文件将生成如下代码:

该文件的内容如下:

你可以删除额外的零填充,如下所示:

numpy.savetxt("myArray.csv", a,fmt='%.2f')

将 NumPy 数组排序

可以使用Numpy模块的sort()方法对numpy数组进行排序:

Sort()函数采用一个可选的axis(整数),默认值为-1。此axis指定要对数组进行排序的axis。-1表示数组将根据最后一个axis进行排序。

请看以下示例:

import numpy
a = numpy.array([16, 3, 2, 6, 8, 10, 1])
print("Sorted array = ", numpy.sort(a))

在本例中,我们在print语句中运用了sort()方法。数组“a”被传递给排序函数。其输出如下:

规范化数组

规范化数组是将数组值设置为某个定义范围内的过程。例如,我们可以说我们想要规范化一个介于-1和1之间的数组,依此类推。

规范化公式如下:

x = (x – xmin) / (xmax – xmin)

现在将这个公式应用于数组,对它进行规范化操作。要查找数组中的最大和最小项,分别使用NumPy的max()和min()方法。

import numpy
x= numpy.array([400, 800, 200, 700, 1000, 2000, 300])
xmax = x.max()
xmin = x.min()
x = (x - xmin)/(xmax - xmin)
print("After normalization array x =
", x)

数组索引

索引指的是数组的一个元素。在以下示例中,我们在单维和二维数组中都使用了索引:

import numpy
a = numpy.array([20, 13, 42, 86, 81, 9, 11])
print("Element at index 3 = ", a[3])

现在使用二维数组进行索引:

import numpy
a = numpy.array([[20, 13, 42], [86, 81, 9]])
print("Element at index a[1][2] = ", a[1][2])

索引[1] [2]表示第二行和第三列(索引从0开始)。因此,我们在输出屏幕上能看到9个索引。

将numpy数组附加到另一个数组上

你可以使用append()方法将一个NumPy数组附加到另一个NumPy数组上。请看以下示例:

import numpy
a = numpy.array([1, 2, 3, 4, 5])
b = numpy.array([10, 20, 30, 40, 50])
newArray = numpy.append(a, b)
print("The new array = ", newArray)

在本例中,我们创建一个numpy数组“a”,然后创建另一个名为“b”的数组。然后我们使用append()方法传递两个数组。当数组“b”作为第二个参数传递时,将被添加到数组“a”的末尾。

正如我们所见,使用Numpy数组非常简单。在使用大多数机器学习库时,Numpy数组非常重要。所以,我们可以说Numpy是通往人工智能的大门。

代码详解:Numpy——通往人工智能的大门相关推荐

  1. 石头剪刀布人工智能代码详解

    石头剪刀布人工智能代码详解 #include <iostream> #include <fstream> #include <stdlib.h> #include ...

  2. BilSTM 实体识别_NLP入门实体命名识别(NER)+BilstmCRF模型原理Pytorch代码详解——最全攻略...

    来自 | 知乎   作者 | seven链接 | https://zhuanlan.zhihu.com/p/79552594编辑 | 机器学习算法与自然语言处理公众号本文仅作学术分享,如有侵权,请联系 ...

  3. Make your own Neural NetWork之代码详解中

    这篇博客接上一篇博客Make Your Own Neural Network之代码详解上.本文也是出自Make your own Neural NetWork这本书.上一篇博客讲了神经网络类的功能模块 ...

  4. 【CV】Pytorch一小时入门教程-代码详解

    目录 一.关键部分代码分解 1.定义网络 2.损失函数(代价函数) 3.更新权值 二.训练完整的分类器 1.数据处理 2. 训练模型(代码详解) CPU训练 GPU训练 CPU版本与GPU版本代码区别 ...

  5. 代码详解|tensorflow实现 聊天AI--PigPig养成记(1)

    Chapter1.代码详解 完整代码github链接,Untitled.ipynb文件内. [里面的测试是还没训练完的时候测试的,今晚会更新训练完成后的测试结果] 修复了网上一些代码的bug,解决了由 ...

  6. python怎么画条形图-python绘制条形图方法代码详解

    1.首先要绘制一个简单的条形图 import numpy as np import matplotlib.pyplot as plt from matplotlib import mlab from ...

  7. DeepLearning tutorial(1)Softmax回归原理简介+代码详解

    FROM: http://blog.csdn.net/u012162613/article/details/43157801 DeepLearning tutorial(1)Softmax回归原理简介 ...

  8. DeepLearning tutorial(3)MLP多层感知机原理简介+代码详解

    FROM:http://blog.csdn.net/u012162613/article/details/43221829 @author:wepon @blog:http://blog.csdn.n ...

  9. DeepLearning tutorial(4)CNN卷积神经网络原理简介+代码详解

    FROM: http://blog.csdn.net/u012162613/article/details/43225445 DeepLearning tutorial(4)CNN卷积神经网络原理简介 ...

最新文章

  1. 单片机蓝牙初始化_单片机程序那些事
  2. Java基础入门(一):Java里面的时间
  3. Leetcode 698. 划分为k个相等的子集 解题思路及C++实现
  4. AL2018届校招笔试——自然语言处理
  5. C语言程序设计--输入与输出
  6. 树,森林,二叉树的互相转换
  7. C++类对象成员、动态对象、new、delete运算符申请动态空间(C++初学面向对象)
  8. Fragment的一些基础
  9. UML/ROSE学习笔记系列一:建模原理、概念
  10. 黑暗传说作弊工具的IOS安卓
  11. 计算机类的本科学校有哪些专业考研,计算机专业考研学校推荐有哪些
  12. 程序员裸辞,利用1个月时间全力找工作,怎么样?
  13. 【119天】尚学堂高琪Java300集视频精华笔记(24-30)
  14. Chrome去除新标签页最近访问
  15. 关于office2013和2016的卸载
  16. 【01】花卉识别-基于tensorflow2.3实现
  17. 计算机网络安全杨寅春,若干部分盲签名方案的密码学分析和改进
  18. 仿生学导论学习笔记——第四章
  19. 百度之星2015资格赛 列变位法解密
  20. 空客设立多个零碳研究机构 致力设计制造氢动力飞机

热门文章

  1. 将base64编码图片上传到七牛云
  2. MutipartFile使用过程中遇到的坑
  3. 图灵2010.10书讯
  4. Win10 + RTX3090 安装CUDA11.2 + CUDNN8.1.0 安装
  5. GAN的理解与TF的实现
  6. 【干货书】Pytorch创建和部署深度学习应用
  7. 为什么小批量会可以使模型获得更大的泛化
  8. Python 还能实现图片去雾?FFA 去雾算法、暗通道去雾算法用起来!(附代码)...
  9. 成为数据科学家、人工智能和机器学习工程师的自学之路
  10. 收藏 | 75道常见AI面试题助你清扫知识盲点(附解析)