NumPy入门介绍
创始人
2024-06-02 23:01:48
0

NumPy是Python语言的一个扩展库,是Numeric Python的缩写,是一个用于科学计算的开源软件包。它提供了高效的多维数组对象,以及针对这些数组执行快速操作的工具。NumPy的核心功能是numpy.ndarray,即一种能够表示任意维度的数组对象。这篇文章将介绍NumPy的基础知识以及一些常用操作。

安装NumPy

在使用NumPy之前,需要先安装它。可以使用pip或conda来安装NumPy。在命令行中输入以下命令可以安装NumPy:

使用pip:

pip install numpy

使用conda:

conda install numpy

导入NumPy

安装完NumPy之后,需要在Python代码中导入NumPy才能使用它的功能。可以使用以下代码导入NumPy:

import numpy as np

以上代码将NumPy库导入并将其命名为np。在接下来的代码中,可以使用np来访问NumPy的函数和对象。

创建NumPy数组

NumPy中的核心对象是数组,也称为ndarray。可以使用以下代码创建一个简单的一维NumPy数组

import numpy as npa = np.array([1, 2, 3])
print(a)

输出结果:

[1 2 3]

可以通过调用数组的shape属性来查看其形状:

print(a.shape)

输出结果:

(3,)

在上面的代码中,np.array()函数将Python列表转换为NumPy数组。

创建多维数组

除了一维数组,NumPy还可以创建多维数组,也称为ndarray。以下是一个创建二维数组的示例:

import numpy as npb = np.array([[1, 2, 3], [4, 5, 6]])
print(b)

输出结果:

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

可以使用b.shape属性查看数组的形状

print(b.shape)

输出结果:

(2, 3)

NumPy数组的基本操作

NumPy提供了许多对数组进行操作的函数和方法。以下是一些基本操作的示例:

访问数组元素

可以通过下标访问数组中的元素。例如,以下代码将访问数组a中的第二个元素:

import numpy as npa = np.array([1, 2, 3])
print(a[1])

输出结果:

2

对于多维数组,可以使用逗号分隔的下标访问元素。例如,以下代码将访问数组b中的第二行第三列元素:

import numpy as npb = np.array([[1, 2, 3], [4, 5, 6]])
print(b[1, 2])

输出结果

6
切片数组

可以使用切片操作来访问数组的一个或多个子集。例如,以下代码将访问数组a中的前两个元素:

import numpy as npa = np.array([1, 2, 3])
print(a[:2])

输出结果:

[1 2]

对于多维数组,可以对每个维度使用切片。例如,以下代码将访问数组b的第一行和第二行的前两列

import numpy as npb = np.array([[1, 2, 3], [4, 5, 6]])
print(b[:2, :2])

输出结果:

[[1 2][4 5]]
修改数组

可以通过下标或切片修改数组中的元素。例如,以下代码将修改数组a中的第二个元素:

import numpy as npa = np.array([1, 2, 3])
a[1] = 4
print(a)

输出结果:

[1 4 3]

对于多维数组,可以使用下标或切片修改单个元素或子集。例如,以下代码将修改数组b中的第一行第二列元素:

import numpy as npb = np.array([[1, 2, 3], [4, 5, 6]])
b[0, 1] = 7
print(b)

输出结果:

[[1 7 3][4 5 6]]
数组运算

NumPy提供了许多对数组进行运算的函数和方法。以下是一些基本运算的示例:

  • 加法:可以使用+运算符将两个数组相加。例如,以下代码将计算数组a和数组b的和
import numpy as npa = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = a + b
print(c)

输出结果:

[5 7 9]
  • 乘法:可以使用*运算符将两个数组相乘。例如,以下代码将计算数组a和数组b的乘积:
import numpy as npa = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = a * b
print(c)

输出结果:

[ 4 10 18]
  • 平方根:可以使用np.sqrt()函数计算数组中每个元素的平方根。例如,以下代码将计算数组a中每个元素的平方根:
import numpy as npa = np.array([1, 4, 9])
b = np.sqrt(a)
print(b)

输出结果:

[1. 2. 3.]
广播

广播是NumPy的一种强大的特性,它可以使不同形状的数组进行算术运算。广播规则是将较小的数组沿着缺失的维度进行扩展以匹配较大数组的形状。例如,以下代码将计算数组a和标量值2的和:

import numpy as npa = np.array([1, 2, 3])
b = a + 2
print(b)

输出结果:

[3 4 5]

在这个例子中,标量值2被广播成一个形状与数组a相同的数组,然后与数组a相加。

数组转置

数组转置是指将数组的行和列交换。在NumPy中,可以使用数组的T属性或np.transpose()函数来转置数组。例如,以下代码将转置数组a:

import numpy as npa = np.array([[1, 2], [3, 4], [5, 6]])
b = a.T
print(b)

输出结果:

[[1 3 5][2 4 6]]
聚合

聚合是指对数组进行统计操作,例如求和,求平均值,计算标准差等。在NumPy中,可以使用数组的方法或函数来执行各种聚合操作。例如,以下代码将计算数组a的总和:

import numpy as npa = np.array([1, 2, 3])
b = a.sum()
print(b)

输出结果:

6
创建随机数组

NumPy提供了许多函数来创建随机数组。这些函数可以用于模拟随机过程,生成测试数据等。以下是一些常用的函数:

  • np.random.rand(): 创建一个指定形状的随机数组,数组元素的取值范围为0到1之间。
  • np.random.randn(): 创建一个指定形状的随机数组,数组元素的取值符合标准正态分布。
  • np.random.randint(low, high, size): 创建一个指定形状的随机整数数组,数组元素的取值范围为low到high之间。
  • np.random.random_sample(size): 创建一个指定形状的随机数组,数组元素的取值范围为0到1之间。
    以下是一些示例代码:
import numpy as np# 创建一个形状为(2, 3)的随机数组
a = np.random.rand(2, 3)
print(a)# 创建一个形状为(2, 3)的随机整数数组
b = np.random.randint(0, 10, (2, 3))
print(b)# 创建一个形状为(2, 3)的随机数组,元素符合标准正态分布
c = np.random.randn(2, 3)
print(c)

输出结果:

[[0.5163848  0.17251428 0.84763657][0.72554487 0.16582879 0.13572987]]
[[6 3 2][4 8 3]]
[[ 1.19130454  0.23281197 -1.17679426][-0.20791349 -1.41122879 -0.45008923]]
数组形状操作

NumPy提供了许多函数来操作数组的形状。以下是一些常用的函数:

  • ndarray.reshape(): 重塑数组的形状,返回一个新的数组,不改变原数组。
  • ndarray.resize(): 修改数组的形状,改变原数组。
  • ndarray.flatten(): 将数组展开成一个一维数组。
  • ndarray.ravel(): 将数组展平成一个一维数组,返回一个视图,不改变原数组。
  • np.newaxis: 在数组中插入新维度。
    以下是一些示例代码:
import numpy as np# 创建一个形状为(2, 3)的数组
a = np.array([[1, 2, 3], [4, 5, 6]])# 重塑数组的形状
b = a.reshape(3, 2)
print(b)# 修改数组的形状
a.resize(3, 2)
print(a)# 展开数组成一维数组
c = a.flatten()
print(c)# 展平数组成一维数组
d = a.ravel()
print(d)# 在数组中插入新维度
e = a[:, np.newaxis]
print(e.shape)

输出结果:

[[1 2][3 4][5 6]]
[[1 2][3 4
数组的排序

NumPy数组提供了多种排序函数,包括sort()、argsort()、lexsort()、searchsorted()等。以下是一些常用的函数:

  • ndarray.sort(): 对数组进行排序。
  • np.argsort(): 返回数组元素从小到大排序后的索引。
  • np.lexsort(): 返回按照多个关键字排序后的索引。
  • np.searchsorted(): 在已排序的数组中查找元素。
    以下是一些示例代码:
import numpy as np# 创建一个数组
a = np.array([3, 1, 2])# 对数组进行排序
a.sort()
print(a) # 输出[1 2 3]# 返回数组元素从小到大排序后的索引
a = np.array([3, 1, 2])
print(np.argsort(a)) # 输出[1 2 0]# 创建一个二维数组
b = np.array([[3, 1, 4], [1, 5, 9]])对数组按照第一列进行排序
idx = np.lexsort(b[:, ::-1].T)
print(b[idx]) # 输出[[1 5 9]
# [3 1 4]]在已排序的数组中查找元素
a = np.array([1, 2, 3, 4, 5])
print(np.searchsorted(a, 3)) # 输出2
print(np.searchsorted(a, 3, side='right')) # 输出3
数组的统计操作

NumPy数组提供了多种统计函数,包括mean()、std()、var()、min()、max()、sum()等。以下是一些常用的函数:

  • ndarray.mean(): 计算数组的平均值。
  • ndarray.std(): 计算数组的标准差。
  • ndarray.var(): 计算数组的方差。
  • ndarray.min(): 返回数组的最小值。
  • ndarray.max(): 返回数组的最大值。
  • ndarray.sum(): 计算数组的和。

以下是一些示例代码:

import numpy as np# 创建一个形状为(2, 3)的数组
a = np.array([[1, 2, 3], [4, 5, 6]])# 计算数组的平均值
print(np.mean(a)) # 输出3.5# 计算数组的标准差
print(np.std(a)) # 输出1.707825127659933# 计算数组的方差
print(np.var(a)) # 输出2.9166666666666665# 返回数组的最小值
print(np.min(a)) # 输出1# 返回数组的最大值
print(np.max(a)) # 输出6# 计算数组的和
print(np.sum(a)) # 输出21

相关内容

热门资讯

常用商务英语口语   商务英语是以适应职场生活的语言要求为目的,内容涉及到商务活动的方方面面。下面是小编收集的常用商务...
六年级上册英语第一单元练习题   一、根据要求写单词。  1.dry(反义词)__________________  2.writ...
复活节英文怎么说 复活节英文怎么说?复活节的英语翻译是什么?复活节:Easter;"Easter,anniversar...
2008年北京奥运会主题曲 2008年北京奥运会(第29届夏季奥林匹克运动会),2008年8月8日到2008年8月24日在中华人...
英语道歉信 英语道歉信15篇  在日常生活中,道歉信的使用频率越来越高,通过道歉信,我们可以更好地解释事情发生的...
六年级英语专题训练(连词成句... 六年级英语专题训练(连词成句30题)  1. have,playhouse,many,I,toy,i...
上班迟到情况说明英语   每个人都或多或少的迟到过那么几次,因为各种原因,可能生病,可能因为交通堵车,可能是因为天气冷,有...
小学英语教学论文 小学英语教学论文范文  引导语:英语教育一直都是每个家长所器重的,那么有关小学英语教学论文要怎么写呢...
英语口语学习必看的方法技巧 英语口语学习必看的方法技巧如何才能说流利的英语? 说外语时,我们主要应做到四件事:理解、回答、提问、...
四级英语作文选:Birth ... 四级英语作文范文选:Birth controlSince the Chinese Governmen...
金融专业英语面试自我介绍 金融专业英语面试自我介绍3篇  金融专业的学生面试时,面试官要求用英语做自我介绍该怎么说。下面是小编...
我的李老师走了四年级英语日记... 我的李老师走了四年级英语日记带翻译  我上了五个学期的小学却换了六任老师,李老师是带我们班最长的语文...
小学三年级英语日记带翻译捡玉... 小学三年级英语日记带翻译捡玉米  今天,我和妈妈去外婆家,外婆家有刚剥的`玉米棒上带有玉米籽,好大的...
七年级英语优秀教学设计 七年级英语优秀教学设计  作为一位兢兢业业的人民教师,常常要写一份优秀的教学设计,教学设计是把教学原...
我的英语老师作文 我的英语老师作文(通用21篇)  在日常生活或是工作学习中,大家都有写作文的经历,对作文很是熟悉吧,...
英语老师教学经验总结 英语老师教学经验总结(通用19篇)  总结是指社会团体、企业单位和个人对某一阶段的学习、工作或其完成...
初一英语暑假作业答案 初一英语暑假作业答案  英语练习一(基础训练)第一题1.D2.H3.E4.F5.I6.A7.J8.C...
大学生的英语演讲稿 大学生的英语演讲稿范文(精选10篇)  使用正确的写作思路书写演讲稿会更加事半功倍。在现实社会中,越...
VOA美国之音英语学习网址 VOA美国之音英语学习推荐网址 美国之音网站已经成为语言学习最重要的资源站点,在互联网上还有若干网站...
商务英语期末试卷 Part I Term Translation (20%)Section A: Translate ...