首页 > 其他分享 >NumPy简介

NumPy简介

时间:2023-04-15 21:11:58浏览次数:49  
标签:Python 简介 数组 numpy np array NumPy

NumPy简介

NumPy是Python中的一个开源库,它有助于数学、科学、工程和数据科学编程。它是一个非常有用的库,可以在Python中进行数学和统计操作。它对多维数组和矩阵乘法有完美的效果。它很容易与C/C++和Fortran集成。

对于任何科学项目,NumPy都是需要了解的工具。它用于处理N维数组、线性代数、随机数、傅里叶变换等。

NumPy是一种处理多维数组和矩阵的编程语言。在数组和矩阵的基础上,NumPy支持大量的数学运算。

为什么使用NumPy?

NumPy的内存效率高,这意味着它可以比其他库更容易处理大量的数据。此外,NumPy工作起来非常方便,特别是对于矩阵乘法和重塑。最重要的是,NumPy的速度很快。事实上,TensorFlow和Scikit学习使用NumPy数组来计算后端的矩阵乘法。

什么是Python NumPy数组?

NumPy数组有点像Python的列表,但同时仍有很大的不同。

正如其名称所示,NumPy数组是numpy库的一个中心数据结构。这个库的名字实际上是 "Numeric Python "或 "Numerical Python "的缩写。

  • 创建NumPy数组

在Numpy中创建一个数组的最简单方法是使用Python List

>>> import numpy as np
>>> myPythonList = [1,9,8,3]
>>> numpy_array_from_list = np.array(myPythonList)
>>> numpy_array_from_list
array([1, 9, 8, 3])
>>> a  = np.array([1,9,8,3])

注意:Numpy文档指出使用np.ndarray来创建一个数组。然而,这是推荐的方法。

也可以从一个Tuple创建一个numpy数组。

  • 数组上的数学运算

你可以在数组上进行数学运算,比如加、减、除、乘。语法是在数组名称后面加上操作(+.-,*,/),然后再加上操作数

>>> numpy_array_from_list + 10
array([11, 19, 18, 13])

array([11, 19, 18, 13])
这个操作在numpy数组的每个元素上加10。

  • 数组的shape

你可以用数组名称前面的对象形状来检查数组的形状。以同样的方式,你可以用dtypes检查类型。

>>> a = np.array([1,2,3])
>>> a.shape
(3,)
>>> a.dtype
dtype('int32')
>>> b  = np.array([1.1,2.0,3.2])
>>> b.dtype
dtype('float64')
  • 2维3维数组
>>> c = np.array([(1,2,3), (4,5,6)])
>>> c.shape
(2, 3)
>>> d = np.array([[[1, 2, 3],[4, 5, 6]],[[7, 8, 9],[10, 11, 12]]])
>>> d.shape
(2, 2, 3)

numpy.zeros()

什么是numpy.zero()?
numpy.zero()或np.zeros Python函数用于创建一个充满零的矩阵。

numpy.zero() 函数 语法

numpy.zeros(shape, dtype=float, order='C')

Shape:是numpy零数组的形状Dtype: 是numpy zeros中的数据类型。它是可选的。默认值是 float64。order: 默认为C,这是Python中numpy.zero()的一个基本行风格。

Python numpy.zeros() 示例

>>> import numpy as np
>>> np.zeros((2,2))
array([[0., 0.],
       [0., 0.]])
>>> np.zeros((2,2), dtype=np.int16)
array([[0, 0],
       [0, 0]], dtype=int16)
  • 什么是numpy.ones()?

np.ones()函数用于创建一个充满1的矩阵。

Python numpy.ones() 语法

numpy.ones(shape, dtype=float, order='C')

Shape:是np.ones Python数组的形状;type:是numpy ones中的数据类型。它是可选的。默认值是 float64;order: 默认为C,这是一种基本的行风格。

Python numpy.ones() 带有数据类型的2D数组示例

>>> np.ones((1,2,3), dtype=np.int16)
array([[[1, 1, 1],
        [1, 1, 1]]], dtype=int16)

参考资料

Python中的numpy.reshape()函数

Reshape函数是用来塑造一个数组而不改变其数据的。在某些情况下,你可能需要将数据从宽到长进行重塑。你可以使用np.reshape函数来完成这个任务。

np.reshape()的语法

numpy.reshape(a, newShape, order='C')

a: 你想重塑的数组;newShape: 新的形状;顺序: 默认为C,这是一个基本的行风格。

NumPy重塑的例子

>>> e  = np.array([(1,2,3), (4,5,6)])
>>> e
array([[1, 2, 3],
       [4, 5, 6]])
>>> e.reshape(3,2)
array([[1, 2],
       [3, 4],
       [5, 6]])

Python中的numpy.flatten()

Flatten函数用于返回一个单维数组的副本。

np.flatten()的语法

numpy.flatten(order='C')

order: 默认为C,这是一种基本的行风格。

NumPy Flatten的例子

>>> e.flatten()
array([1, 2, 3, 4, 5, 6])

numpy.hstack()

Numpy.hstack用于水平堆叠输入数组的序列,以便形成一个单一的数组。使用hstack()函数,你可以水平地追加数据。

>>> f = np.array([1,2,3])
>>> g = np.array([4,5,6])
>>> np.hstack((f, g))
array([1, 2, 3, 4, 5, 6])

numpy.vstack()

Numpy.vstack用于垂直堆叠输入数组的序列,以便形成一个单一的数组。

>>> np.vstack((f, g))
array([[1, 2, 3],
       [4, 5, 6]])

生成随机数numpy.random.normal

numpy.random.normal(loc, scale, size)

Loc:平均值。分布的中心;Scale:标准差;size:返回的数量
例子:

#从正态分布中生成随机nmber
>>> normal_array = np.random.normal(5, 0.5, 10)
>>> normal_array
array([5.7267271 , 5.11429091, 4.72336917, 5.80205288, 4.50582939,
       4.18906482, 5.05186217, 4.54225537, 4.4914505 , 4.67761922])

NumPy的Asarray函数

Asarray()函数是在你想把一个输入转换为一个数组时使用的。输入可以是一个列表、元组、ndarray等。

语法:

numpy.asarray(data, dtype=None, order=None)[source]

data:你想转换为数组的数据;dtype: 这是一个可选的参数。如果不指定,数据类型将从输入数据中推断出来;order: 默认为C,这是基本的行风格。其他选项是F(Fortan-style)。

例子:

>>> A = np.matrix(np.ones((4,4)))
>>> A
matrix([[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.]])
>>> np.array(A)[2]=2
>>> np.asarray(A)[2]=2
>>> A
matrix([[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [2., 2., 2., 2.],
        [1., 1., 1., 1.]])

矩阵是不可改变的。如果你想在原数组中增加修改,你可以使用asarray。

numpy.range()

numpy.range()是一个内置的numpy函数,它返回一个ndarray对象,其中包含定义的区间内的均匀间隔的值。例如,你想创建从1到10的值;你可以使用Python函数中的np.range()。

语法:

numpy.arange(start, stop, step, dtype)

start为区间起点;stop为区间的终点。step值之间的间距。默认步长为1。dtype为输出的数组类型。

>>> np.arange(1, 11)
array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10])
>>> np.arange(1, 14, 4)
array([ 1,  5,  9, 13])

Linspace函数

Linspace给出了均匀间隔的样本。

语法:

numpy.linspace(start, stop, num, endpoint)

start: 序列的起始值;Stop: 序列的结束值;Num: 要生成的样本数。默认为50;endpoint:如果是真为闭区间。如果为假为开区间。

输出:

>>> np.linspace(1.0, 5.0, num=10)
array([1.        , 1.44444444, 1.88888889, 2.33333333, 2.77777778,
       3.22222222, 3.66666667, 4.11111111, 4.55555556, 5.        ])
>>> np.linspace(1.0, 5.0, num=5, endpoint=False)
array([1. , 1.8, 2.6, 3.4, 4.2])

logspace

语法:

numpy.linspace(start, stop, num, endpoint)

start: 序列的起始值;Stop: 序列的结束值;Num: 要生成的样本数。默认为50;endpoint:如果是真为闭区间。如果为假为开区间。

例子:

>>> np.logspace(3.0, 4.0, num=4)
array([ 1000.        ,  2154.43469003,  4641.58883361, 10000.        ])
>>> x = np.array([1,2,3], dtype=np.complex128)
>>> x.itemsize
16

索引和分片

>>> e  = np.array([(1,2,3), (4,5,6)])
>>> print('First row:', e[0])
First row: [1 2 3]
>>> print('Second row:', e[1])
Second row: [4 5 6]
>>> print('Second column:', e[:,1])
Second column: [2 5]
>>> print(e[1, :2])
[4 5]

统计函数

NumPy有不少有用的统计函数,可以从数组中的给定元素中找到最小、最大、百分位数标准差和方差等。这些函数解释如下

  • Min np.min()
  • 最大值 np.max()
  • 平均值 np.mean()
  • 中位数 np.median()
  • 标准偏差 np.std()

考虑以下数组:

>>> normal_array = np.random.normal(5, 0.5, 10)
>>> normal_array
array([5.55293581, 4.8812732 , 5.10225064, 5.8106724 , 4.976561  ,
       4.92085464, 5.00599384, 4.79906356, 5.05109114, 4.27206707])
>>> np.min(normal_array)
4.27206706557958
>>> np.max(normal_array)
5.81067239631932
>>> np.mean(normal_array)
5.037276327768497
>>> np.median(normal_array)
4.99127741937172
>>> np.median(normal_array)
4.99127741937172

Numpy.do

numpy.dot(x, y, out=None)

x,y: 输入数组。x和y都应该是1-D或2-D。out: 这是要返回的1-D数组标量的输出参数。否则应返回ndarray。

Python中的函数numpy.dot()返回两个数组x和y的点积。如果x和y都是1-D,函数dot()返回一个标量;否则,它返回一个数组。

如果x的最后一维与y的最后一维不一致,Python中的点乘会引发ValueError异常。

例子:

>>> f = np.array([1,2])
>>> g = np.array([4,5])
>>> np.dot(f, g)
14

矩阵乘

Numpy matmul()函数用来返回2个数组的矩阵乘积。下面是它的工作原理

    1. 2-D数组,它返回正常的乘积
    1. 维数>2,乘积被当作矩阵的堆栈处理
    1. 一维数组首先被提升为矩阵,然后再计算乘积

语法:

numpy.matmul(x, y, out=None)
  • x,y: 输入数组。不允许使用标量

  • out: 这是一个可选参数。通常情况下,输出存储在ndarray中。

>>> h = [[1,2],[3,4]]
>>> i = [[5,6],[7,8]]
### 1*5+2*7 = 19
>>> np.matmul(h, i)
array([[19, 22],
       [43, 50]])

计算行列式

>>> a = np.array([[1, 2], [3, 4]])
>>> np.linalg.det(a)
-2.0000000000000004

标签:Python,简介,数组,numpy,np,array,NumPy
From: https://www.cnblogs.com/testing-/p/17321886.html

相关文章

  • fastdds学习之0——简介
    1、fastdds文档eProsimaFastDDS是DDS(DataDistributionService)协议的一个C++语言实现版本,该协议由ObjectManagementGroup(OMG)组织定义。eProsimaFastDDS库既提供了一个应用编程接口(API),又提供了一种通信协议,使用这种通信协议可以部署以数据为中心的发布者-订阅......
  • 存储引擎-简介
    存储引擎简介:是存储数据,建立索引,更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也被成为表类型 ......
  • 信息安全简介
    信息安全概念和演化过程信息安全信息安全是保护信息系统免受意外或故意的非授权泄漏、传递、修改或破坏。信息安全是为数据处理系统建立和采取的技术和管理的安全保护,保护计算机硬件、软件和数据不因偶然和恶意的原因而遭到破坏、更改和泄漏。信息安全涉及信息的保密性、可用......
  • Xen虚拟机简介
    XenVMM(virtualmachinemonitor)是由剑桥大学计算机实验室开发的一个开源项目,它能够让我们创建更多的虚拟机,每一个虚拟机都是运行在同一个操作系统上的实例。这些客户OS可以是修补过的Linux内核2.4或2.6,也可以是修补过的NetBSD/FreeBSD内核。用户应用程序就运行在这些客户OS上,并不......
  • iOS MachineLearning系列(1)——简介
    iOSMachineLearning系列(1)——简介最近,随着Chat-GPT的发布,人工智能相关的资讯和话题再次火热了起来。有了人工智能的加持,对人们的生活以及各行各业的工作都将带来效率的极大提升。目前,各种大模型的发布层出不穷,这些大模型虽然功能非常强大(如文本理解,绘图等),但对于个人来说,要跑起这......
  • vue3微信公众号商城项目实战系列(3)项目初始文件及文件夹简介
    首先我们来看下项目的文件结构图,如下: 各个文件及文件夹作用如下:文件或文件夹名称作用.vscodeVisualStudioCode开发工具的配置信息存放目录,从这个目录可以看出vue3确实是推荐使用vscode作为开发工具的。node_modules项目中用到的包存放目录,当我们用"npminstall......
  • 【c&c++】strdup函数简介
    strdup函数简介收藏 用法:#include<string.h> 功能:复制字符串s  说明:返回指向被复制的字符串的指针,所需空间由malloc()分配且可以由free()释放。  举例:       //strdup.c          #include<syslib.h>     #include<string.h>      mai......
  • 事务-简介以及操作演示
    事务:是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,,即这些操作要么同时成功,要么同时失败默认mysql的事务是自动提交的,也就是说,当执行一条DML语句,mysql会立即隐式地提交服务事务操作:查看/设置事务提交方式:selec......
  • Q355NE钢板简介、Q355NE性能介绍、Q355NE执行标准
    一、Q355NE钢板简介:Q355NE属于低合金高强结构钢板,Q355NE钢板执行标准为GB/T1591-2018专用技术条件。Q355NE钢板牌号介绍:Q355NE钢板牌号中的Q代表屈服,355代表钢板强度,Q355系列材质分为四个级别分别为(B=20℃冲击、C=0℃冲击、D=-20℃低温冲击、E=-40℃低温冲击)二、Q355NE钢板化学成分......
  • 微信小程序云开发中的command简介
    微信小程序云开发(WeChatMiniProgramCloudDevelopment)是微信官方推出的一种简化小程序开发的方案。它提供了一个完整的后端云服务,支持数据库、存储、云函数等功能。在云开发中,Command是一个重要的概念,主要用于操作数据库。Command是数据库命令的构造器,它用于构造复杂的数据......