numpy:入门

深度学习入门12-多维数组的运算 深度学习入门12-多维数组的运算 图片来源:搜狐 大家好!在上一篇文章中,我们学习sigmoid函数的实现和新的激活函数ReLU,为了更加高效地实现神经网络,我们将学习NumPy多维数组的运算。 1 多维数组 简单地讲,多维数组就是“数字的集合”。如下图所示,单个数据元素可以称为标量,数字排成一列的集合可以称为一位数组,排成长方形的集合称为二维数组,排成三维状的集合称为三维数组,或者(更加一... 阅读详情

为什么需要numpy:Python中的l数据类型list占用资源过大,不适合做大量计算;数据类型array又只能存储一维数组。所以引入numpy来处理多维数组的存储和计算。

一.创建数组(ndarray)

1.直接创建

np.array(object)

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

2.利用内置函数

np.zeros(shape),np.ones(shape),np.arange(start,stop,step),np.linspace(start,stop,num=50),np.random.rand(do,d1,.,dn),np.random.randint(low,high,size=None)

>>> np.zeros((2,2))
array([[ 0.,  0.],
       [ 0.,  0.]])
>>> np.ones((2,2))
array([[ 1.,  1.],
       [ 1.,  1.]])
>>> np.arange(0,10,1)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> np.arange(0,9).reshape((3,3))
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
>>> np.linspace(0,10,11)
array([  0.,   1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.,  10.])
>>> np.random.rand(2,2)
array([[ 0.11611405,  0.85913958],
       [ 0.11487685,  0.96038192]])
>>> np.random.randint(0,10,(3,3))
array([[8, 3, 8],
       [9, 5, 9],
       [3, 1, 0]])

打印数组:

一维数组print为row,二维数组print为matrices,三维数组print为list of matrices

>>> print(np.arange(0,4))
[0 1 2 3]
>>> print(np.zeros((2,2)))
[[ 0.  0.]
 [ 0.  0.]]
>>> print(np.random.randint(0,10,(3,3)))
[[4 3 2]
 [5 9 3]
 [1 5 4]]

二:对数组的基本操作

1.代数运算:+,-,×(这里是各对应元素相乘,不是矩阵乘法)

>>> a=np.arange(0,4).reshape((2,2))
>>> a
array([[0, 1],
       [2, 3]])
>>> b=a*a
>>> b
array([[0, 1],
       [4, 9]])
>>> a+b
array([[ 0,  2],
       [ 6, 12]])
>>> a-b
array([[ 0,  0],
       [-2, -6]])
2.矩阵乘法:np.dot(a,b)

>>> np.dot(a,b)
array([[ 4,  9],
       [12, 29]])
若参数为两个一维数组,则可看成是两个向量的点乘

>>> np.dot(np.array([1,2,3]),np.array([1,3,6]))
25

注意:当两个类型不同的数组进行运算后,结果将是更一般的类型。

>>> c=np.arange(4)	#np.arange()默认类型为np.int32
>>> d=np.linspace(0,3,4)	#np.linspace()默认类型为np.float64
>>> c+d
array([ 0.,  2.,  4.,  6.])
>>> (c+d).dtype
dtype('float64')


3.逻辑运算:<,>,==

>>> a
array([[0, 1],
       [2, 3]])
>>> b
array([[0, 1],
       [4, 9]])
>>> a<b
array([[False, False],
       [ True,  True]], dtype=bool)
>>> a==b
array([[ True,  True],
       [False, False]], dtype=bool)

4.ndarray class中有许多函数实现了对数组对一元运算。比如求数组中的最大值,最小值,所有元素之和等

>>> a
array([[0, 1],
       [2, 3]])
>>> a.sum()    #所有元素之和
6
>>> a.sum(axis=0)    #列相加
array([2, 4])     
>>> a.sum(axis=1)    #行相加
array([1, 5])
>>> a.max()	#所有元素中对最大值
3
>>> a.max(axis=0)    #各列最大值
array([2, 3])
>>> a.max(axis=1)    #各行最大值
array([1, 3])

5.Universal Functions(ufunc)
比如sqrt,sin,cos,exp,max,min,argmax,argmin,sum,trace等等
,这个参见另一篇博文,专门介绍numpy的universal function

三:索引(indexing),切片(slicing),迭代(iterating)
1.一维数组对索引,切片和迭代跟python中对list对操作一样。
>>> a=np.arange(10)
>>> a[5]
5
>>> a[5:]
array([5, 6, 7, 8, 9])
>>> a[5:10:2]
array([5, 7, 9])
>>> for i in a[:3]:
...     print(i)
... 
0
1
2

2.多维数组有多个axis,所以每一个axis需要一个索引。
>>> a=np.arange(6).reshape(2,3)
>>> a
array([[0, 1, 2],
       [3, 4, 5]])
>>> a[1,1]
4
>>> a[:,:2]
array([[0, 1],
       [3, 4]])
>>> for row in a:
...     print(row)
... 
[0 1 2]
[3 4 5]

四.改变数组的形状(shape)
array.ravel(),array.reshape(a,b),a.T(),array.resize(a,b) (只有resize()会直接改变数组)
>>> a
array([[0, 1, 2],
       [3, 4, 5]])
>>> a.ravel()
array([0, 1, 2, 3, 4, 5])
>>> a
array([[0, 1, 2],
       [3, 4, 5]])
>>> a.reshape(3,2)
array([[0, 1],
       [2, 3],
       [4, 5]])
>>> a.T
array([[0, 3],
       [1, 4],
       [2, 5]])
>>> a.resize(3,2)
>>> a
array([[0, 1],
       [2, 3],
       [4, 5]])

五:合并数组,分割数组
np.vstack(a,b):垂直方向合并; np.vsplit(a,n):垂直方向分割
np.hstack(a,b):水平方向合并;  np.hsplit(a,n):水平方向分割
>>> np.vstack((np.zeros((2,2)),np.ones((2,2))))
array([[ 0.,  0.],
       [ 0.,  0.],
       [ 1.,  1.],
       [ 1.,  1.]])
>>> np.hstack((np.zeros((2,2)),np.ones((2,2))))
array([[ 0.,  0.,  1.,  1.],
       [ 0.,  0.,  1.,  1.]])
>>> a=np.arange(12).reshape(2,6)
>>> a
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11]])
>>> np.hsplit(a,2)
[array([[0, 1, 2],
       [6, 7, 8]]), array([[ 3,  4,  5],






数字电路复位信号设计(异步复位、同步释放)笔记详解 复位信号设计(异步复位、同步释放)笔记详解 1 时序设计 1.1 复位信号设计(异步复位、同步释放) 1.1.0 复位恢复时间和清除时间 首先解释一下恢复时间(recovery time)和清除时间(removal time):(以复位信号低电平有效为例) 复位恢复时间(recovery time):撤销复位时,复位信号无效到时钟有效沿来临之间需要维持的最小的时间,类似于同步时钟的建立时间setup time; 复位清除时间(removal time):复位时,在时钟有效沿来临之后复位信号还需要保持复位 阅读详情

相关推荐

numpy通用函数:快速的逐元素数组函数

通用函数也可以称为 ufunc, 是一种在 ndarray 数据中进行逐元素操作的函数。某些简单函数接受了一个或者多个标量数值,并产生一。介绍一下二元通用函数:比如 add 和 maximum 则会接受两个数组并返回一个数组结尾结果,所以叫做二元通用函数。个或多个标量结果,而通用函数就是对这些简单函数的向量化封装。

分享关于数据的知识。 935

Task06:多维数组

多维数组 众所周知,矩阵是用的最广的二维数组。但是现实世界上有很多事物是多于二维的。物理学上的波以尔定律,就是以气体压强、气体容积和绝对温度的三维数据来描述的。库存物资的安放位置,是以库房号、货架号、层号和列号的四维数据来定位。人事档案,则是以姓名、个人属性和个人属性值的三维数据来描述。多维数组的一般表达式为A(i,j,k…),式中,A为多维数组名;i,j,k…为一维、二维、三维…下标索引值。通常...

weixin_45138411的博客 281

numpy教程:Universal Functions 通用函数 伪随机数

本函数是实现a除以b,然后返回商与余数的元组。如果两个参数a,b都是整数,那么会采用整数除法,结果相当于(a//b, a % b)。如果a或b是浮点数,相当于(math.floor(a/b), a%b)。可以把一些简单的函数做快速的向量化封装,输入时一个以上的标量,输出也是一个以上的标量。提供了很多生成随机数的函数,可以选择生成符合某种概率分布的随机数。能保存多个数组,还可以指定数组对应的关键字,不过是未压缩的。在生成大量样本方法,是全局的,如果想要避免全局状态,可以用。计算的是X和X的转置的矩阵乘法。

Cachel Wood的博客 345

深度学习入门多维数组运算

对于实现神经网络,学会使用numpy多维数组的使用是必须的。多维数组简单地讲就是‘数字的集合’,数字排一列的集合、排成行乘列的长方形集合、排成长乘宽乘高的立方体形状,或者说N维状的集合都称为多维数组。主要简单介绍了一下矩阵在numpy乘积运算中的一个过程以及运算需要注意的几个小技巧。

weiwei152433的博客 1417

python中多维数组计算_计算Python中多维数组数组的出现

I have the following type of arrays:a = array([[1,1,1],[1,1,1],[1,1,1],[2,2,2],[2,2,2],[2,2,2],[3,3,0],[3,3,0],[3,3,0]])I would like to count the number of occurrences of each type of array such as[1,...

weixin_39589394的博客 219

算法-二维数组的各种运算

public class 数组_二维数组 { //找出数组中最大的元素 private static Double max(int[] a) { double max = a[0]; //如果after &gt; before,则将大的这个值赋值给上一个数 for (int i = 1; i &lt; a.length; i++) ...

大白 9282

Linux进程管理命令之accton/lastcomm

http://blog.sina.com.cn/s/blog_710faf9801013yhg.html acct是一个工具包,里面包含有针对用户连接时间、进程执行情况等进行统计的工具。它可以记录用户登录信息。用户所执行的程序,程序执行情况信息等。 accton:打开或关闭进程统计   作用:accton命令打开进程统计,如果不带任何参数,即关闭进程统计。   用法:accton

bytxl的专栏 2156

Linux系统管理命令(1)accton的使用

安装: apt install acct accton accton命令是Linux系统进程管理命令之一,它的作用是打开进程统计,如果不带任何参数,即关闭进程统计。 具体用法为:accton [ -V | --version ] [ -h | --help ] [ filename ] 其主要选项如下: -V,--vers...

weixin_30708329的博客 315

白盒交换机公司&产品列表

信息来源: http://www.pica8.com/products/hardware-compatibility-list https://cumulusnetworks.com/products/hardware-compatibility-list/ https://opennetlinux.org/hcl https://github.com...

weixin_34128534的博客 526

accton 打开或关闭进程统计

4.1 accton:打开或关闭进程统计 作用:accton命令打开进程统计,如果不带任何参数,即关闭进程统计。 用法:accton [ -V | --version ] [ -h | --help ] [ filename ] 主要选项如下。 -V,--version:显示ac版本并退出。 -h,--help:打印命令概要,并显示系统默认accton文件。 ...

weixin_34354945的博客 417

OF-DPA + ONL 的 CLI 常用命令笔记

环境准备 白盒交换机硬件型号: Edgecore AS5710-54X ONL 版本号: ONL-master_ONL-OS_2018-11-23.0856-940ee2c OF-DPA版本号: ofdpa_3.0. EA 控制器IP地址: 192.168.200.30 白盒交换机IP地址: 192.168.200.232 将白盒交换机的以太网管理口 Mgmt 通过...

筋斗云计算 1311

NumPy 通用函数——《Python数学函数库NumPy

虽然NumPy提供了大量的内置通用函数,但有时我们可能需要执行特定的操作,这些操作可能不是NumPy直接提供的。在这种情况下,我们可以使用NumPy的函数来创建自定义的通用函数。函数将一个只接受标量输入的函数转换成一个可以接受数组输入的通用函数。这样,我们就可以在数组级别上调用这个函数,并利用矢量化操作的优势。下面是一个使用# 定义一个只接受标量输入的函数if x > 0:else:return -x# 使用np.vectorize()将标量函数转换为通用函数。

Python老吕的博客 1507

关于多维数组的运算问题

慰问慰问   等非凡方法   发vdv

朱里安 1264

Numpy多维数组基础及运算详解

♚zarten,互联网一线工作者。博客地址:zhihu.com/people/zarten概述Numpy是python数值计算非常重要的包,其他许多python科学计算的...

Python中文社区 1439

多维数组数组的加法运算

初始化方式 1.静态初始化   int [][] a={{1,2,3},{8,4,6},{4,7,2}} 内存分析 package cn.array2; public class Test01 { public static void main(String[] args) { int[][] a= { {1,2...

weixin_30709929的博客 1450

numpy中的ufunc用法详解

什么是universal function A universal function (or ufunc for short) is a function that operates on ndarrays in an element-by-element fashion, supporting array broadcasting, type casting, and several oth...

thompson的博客 1733

NumPy学习笔记(2)--Array数组和矩阵基本运算

numpy还是很强大的,这里把一些矩阵基本操作做一些整理,方便大家,也方便我自己码代码的时候查找。 有句话对于我这个初学者来说觉得还是挺符合的,翻书看视频浏览教程贴啊什么的,会发现很多知识点,一开始并不用非得记下都有些什么函数,问题是好像也记不住,学过去之后只要知道这个东西它都能实现什么些什么功能能干些什么事就够了,在你写程序的时候你需要实现什么,这时候再去查找就足够了,用着用着自然就记住了。 犹...

对角巷 10万+

二维数组计算

namespace 二维数组计算 { class Program { static void Main(string[] args) { short[,] b = new short[5, 5] { { 1, 2, 3, 4, 5 }, { 1, 1, 1, 1, 1 }, { 1, 1, 1, 1,

cvMat的博客 1753

12、每日卫星任务规划问题的不同公式

本文探讨了卫星任务规划问题的多种数学公式表示方法,包括传统的整数线性规划(ILP)模型、改进的基于路径的公式、基于集合覆盖的公式以及动态规划公式。通过案例研究比较了不同公式的求解效率和适用场景,并提供了使用Python进行实际求解的操作步骤。最后讨论了进一步优化策略及未来研究方向,旨在为解决卫星任务规划问题提供全面的理论支持和实践指导。

assembly8low的博客 183

S7-200SMART 的运动控制(二)指令详细介绍+常见错误分析(图文).docx

S7-200SMART 的运动控制(二)指令详细介绍+常见错误分析(图文)

上一篇: python函数中*args和**kwargs的区别
下一篇: spyder中常用快捷键
一从际发
博客等级 码龄12年 103粉丝 126原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值