【Python进阶】你真的明白NumPy中的ndarray吗?

【numpy】ndarray 多维数组的维数和轴号分析总结 numpy中ndarray定义了多维数组,但是维数和轴号(axis)特别容易混淆,因此作了以下分析总结。 维数的判断(2种方法) 1、数左方括号“ [ ”的个数,如下图就是4维数组(有四个左括号,是4维) 2、查看shape属性的输出元组元素个数(有四个元素,也是4维) 轴号的判断(从左向右依次是0,1,2...) 轴号可以数左括号“[”的顺序得到,从左到右依次是0,1,2... ,... 阅读详情

欢迎来到专栏《Python进阶》。在这个专栏中,我们会讲述Python的各种进阶操作,包括Python对文件、数据的处理,Python各种好用的库如NumPy、Scipy、Matplotlib、Pandas的使用等等。我们的初心就是带大家更好的掌握Python这门语言,让它能为我所用。

今天是《Python进阶》专栏的第三期,在本期中,我们将主要介绍Numpy的一些进阶知识。

作者&编辑 | 汤兴旺

如果你想掌握Python,那么NumPy是你必须要精通的。NumPy实际上是Python语言的一个扩展程序库,支持高维数组与矩阵运算,提供了大量的数学函数库。

1 ndarray内存机制

我们知道NumPy最重要的一个特点是其N维数组对象ndarray。通常ndarray内部由以下内容组成。

数据指针:一个指向实际数据的指针;

数据类型(dtype):描述了数组中每个元素所占的字节数;

维度(shape):一个表示数组形状(各维度大小)的元组。

跨度(strides):一个表示从当前元素前进到下一个元素需要跨过的字节数。

我们通过下面的代码看下ndarray的内容:

import numpy as np

a = np.arange(1,25).reshape((2,2,2,3))

print(type(a))

print(a.shape)

print(a.dtype)

print(a.strides)

640?wx_fmt=png

这里的shape是指每个维度元素的个数。这里的四维数组每个维度的元素个数分别为2、2、2和3。咦,这好像不对呀!2+2+2+3=9,这不等于24呀!难道我分析错了吗?

640?wx_fmt=gif

当然不是,我们首先将a输出来,结果如下:

640?wx_fmt=png

这里最里面一层[ ]可以代表1个一维数组,里面有3个元素。加粗的红色一对[ ]代表二维数组,它里面有二个[ ],即二维数组中有2个一维数组。所以认为第三维度中元素个数为2;加粗的紫色一对[ ]代表三维数组,它里面有二个[ ],即三维数组中有2个二维数组。所以认为第二维度中元素个数为2。同理,第一维度中元素个数为2。

640?wx_fmt=jpeg

相信你现在应该明白了shape中的元组为啥是(2,2,2,3)了吧。

说完shape,我们再来看下dtype,它是指数组元素类型,注意,这里的数组元组就是指1,2,...,23,24这样的元素。另外数组中每个元素的类型都是相同的,在这个数组中,数组中每个元素类型都为int32。

最后我们再分析下跨度(strides)。它是指从当前元素前进到下一个元素需要跨过的字节数。

我们可以看出上面例子中的strides=(48,24,12,4)。那么这四个数是怎么来的呢?

我们在上面的四维数组中,dtype 为 int,而int 占 4个字节。而第四维度里面有3个元素,总字节数为12,所以从第四度跨到第三维度需要跨过的字节数为12;第三维度里面有2个元素(一维数组),每个一维数组的总字节数为12,所以从第三维度跨到第二维度需要跨过的字节数为24。同理,从第二维度跨到第一维度的字节数为48。

所以上面例子中的四维数组的跨度为(48,24,12,4),它在内存中的表示如下图所示:

640?wx_fmt=png

从上图可以明显的看出从要想到达第三维度(轴2),必须跨过第四维度(轴3),需要跨过3个元素,字节数为12;要想到达第一维度(轴0),必须跨过第二、三、四维度,总共12个元素,字节数为12*4=48。

这也就是在NumPy 中数据存储的方式。它存储在一个均匀连续的内存块中,可以这么理解,NumPy 将多维数组在内部以一维数组的方式存储,我们只要知道了每个元素所占的字节数(dtype)以及每个维度中元素的个数(shape),就可以快速定位到任意维度的任意一个元素。

2 NumPy高维数组索引与转置

2.1 索引

当提到索引时,你可能觉得很简单,不就是通过索引获取某个元素吗?道理的确是这样的。但是在面对高维数组时,通过索引来获取某个元素还是比较麻烦的。

下面我们通过一个案例来分析下一个四维数组的索引。

640?wx_fmt=png

如果我想取得上图中17这个元素,应该怎么办呢?

640?wx_fmt=png

首先将这个四维数组用上图的轴的形式来表示。我们可以先把它看成四个块,其中第0轴和第1轴确定某个块的位置,第2轴和第3轴确定块中某个元素具体的位置。

图中的17在第3块,如下图的黄色部分,用0轴和1轴来表示的话,索引就是[1,0]。

640?wx_fmt=png

现在块的位置确定了,接下来我们确定块中元素的位置。如下图所示:

640?wx_fmt=png

17这个元素在上图中的索引为[1,1]。接下来我们只需要把确定块的索引[1,0]和确定块中元素的索引[]按照[第0轴,第1轴,第2轴,第3轴]这样的格式合并即可,在这个案例中,合并后17的索引为[1,0,1,1]。

当然,你可以用下面的代码确认下,我们的分析是否正确。

import numpy as np   

a = np.arange(1,25).reshape((2,2,2,3))

print(a[1,0,1,1])  

这个就是高维数组的索引,你已经明白了吗?

2.2 高维数组转置

高维数组的转置一直是学习NumPy的一个难点,尽管在NumPy中只需要调用numpy.transpose就可以完成转置操作,但是你真的能分析清楚为什么结果是这样的吗?尤其是高维数组。下面我们就举一个比较简单的例子来分析下。如下:

640?wx_fmt=png

上图是原数组,我们经过下面的代码进行转置,会得到如下的结果:

import numpy as np

b = a.transpose((1,0,2))

转置后的结果:

640?wx_fmt=png

相信你已经看出了具体的差别了,那就是轴的索引顺序的互换。因为在代码中我们要求0轴和1轴互换,因此转置后的结果实际上就是a[1,0]会变成原数组a[0,1];a[0,1]会变成原数组a[1,0]。如果用图表示,就如下图所示:

640?wx_fmt=png

相信你已经明白了其中的原理了,接下来留一个思考题,如下:

640?wx_fmt=png

请问,从左到右怎么转置才能得到!

总结

本期我们介绍了ndarray的内存机制及高维数组的索引和转置。NumPy的知识还有很多,上面介绍的只是NumPy中比较难理解的几个问题,若想更加系统的学习NumPy及知道上面思考题的分析过程和答案,请移步我们的知识星球!

下期预告:Python库Scipy的高级应用

有三AI编程与开源框架知识星球

640?wx_fmt=png

有三AI编程与开源框架知识星球创建了,欢迎加入,希望大家能借助这个平台,扎实自己的编程基础。

转载文章请后台联系

侵权必究

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

往期精选

python四维数组代表图像_【Python进阶】你真的明白NumPy中的ndarray吗? 欢迎来到专栏《Python进阶》。在这个专栏中,我们会讲述Python的各种进阶操作,包括Python对文件、数据的处理,Python各种好用的库如NumPy、Scipy、Matplotlib、Pandas的使用等等。我们的初心就是带大家更好的掌握Python这门语言,让它能为我所用。今天是《Python进阶》专栏的第三期,在本期中,我们将主要介绍Numpy的一些进阶知识。作者&编辑 | ... 阅读详情

相关推荐

Python学习:Python numpy ndarray.shape以及ndarray.ndim问题

Python numpy ndarray.shape问题以及ndarray.ndim问题 1. ndarray.dim 按我的理解,numpy里面的dimension定义特指嵌套的层数,而不是按照矩阵中dimension的定义计算,我一开始也非常困惑,看了知乎“张伊”大佬的回答才明白 例: c=np.array( [1, 2, 3, 4] ) print('Dimension:'+str(c.ndim)) PS C:\Users\Yooooooooooooooooomu\Desktop\t

seanpnex的博客 876

python四维数组_Python数据分析--1.1Numpy多维数组的创建与访问

在人工智能领域,很多的数学运算采用的都是NumPy这个库,本节课我们将从NumPy的基本使用开始,逐渐的去解决掉那些数学问题,让Python与数学深度的结合在一起。NumPy的本质还是一个多维的数组对象,看到这句话的你,一定会有一个疑问。它的原因是这样的,虽然我们之前学习过的数组对象和NumPy的数据表示看似一样,但是数组是无法直接参与数值运算的。而NumPy提供了非常多的科学计算方法,给我们提供...

weixin_39674978的博客 5040

《NumPy 权威指南》第2章 解剖 ndarray:透视数据的骨架

本章我们将像外科医生一样,对 ndarray 对象进行深度解剖。我们将揭开它内存布局的秘密,彻底搞懂多维数组的几何逻辑。掌握了本章,你就不再是盲目地复制粘贴代码,而是能够在大脑中构建出数据的立体模型。

撸码猿的博客 954

【画学numpy】2.numpy数组创建

上一章:【画学numpy】1.numpy数组初识 本文是画学numpy系列文章之一 ⭐️github:drawing_and_studying_numpy包含了可以运行的notebook文件以及本文绘制的所有插图。 numpy数组创建 上一小节中,创建一个长为4的1维数组要写4个数字,如果要创建一个长为100的数组,就要写100个数字,未免太麻烦了一点。 本小节,将介绍一系列十分常用且方便的数组创建方法: 等间隔数组:数组两两之间间隔相同,类似等差数列。 全等数组:数组里所有元素都相同。 随机数组:按

Light2077 3924

LM358实战:手把手教你搭建电流检测电路(附电阻选型计算)

本文详细解析了使用LM358运算放大器搭建电流检测电路的全过程,包括基础原理、采样电阻选型、放大电路设计及PCB布局技巧。通过实战案例和精确计算,帮助工程师快速掌握低成本、高精度的电流检测方案,适用于电源管理、电机控制等多种应用场景。

weixin_30872157的博客 451

Rocky Linux 9 离线环境Docker部署实战:从依赖打包到服务启动

本文提供了一份详尽的Rocky Linux 9离线环境Docker部署实战指南。针对无法访问外网的生产或内网服务器,文章详细讲解了如何在联网跳板机上下载Docker二进制包及所有系统依赖RPM包,并完成打包。随后,手把手指导在离线服务器上进行依赖安装、二进制文件部署、systemd服务配置、SELinux与防火墙调优,最终实现Docker服务的成功启动与验证。

weixin_28363123的博客 142

numpy求多维(四维)数组均值

numpy求均值 我们知道通过“np.mean(a)”可以求得N为矩阵左右元素的均值,但是有时候我们要求多维数组特定维度的均值我们该怎么办呢? 假如我们要求多维数组hsi_target除第二维之外的其他维度的均值。其中hsi_target的维度信息为:(1,31,1392,1300),我们要得到一个长度为31的一维数组。 已知:np.mean(a,axis=0)为每列的均值,np.mean(a,axis=1)为求每一行的均值,因此np.mean(a,axis=n)为求第n维的均值,因此我们可以利用嵌套的方法

zhen15652的博客 6253

YOLOv5改进系列(4)——添加ECA注意力机制

手把手教你在YOLOv5中加入ECA注意力机制,文内含两种方法,小白也能看懂!

路人贾的博客 8547

numpy教程:numpy中的数值运算,一维到4维都是怎么计算的

逐元素运算:Numpy 数组的运算大多是逐元素的,维度相同的数组可以直接进行加减乘除等运算。广播机制:广播允许形状不匹配的数组进行运算,Numpy 会自动扩展较小数组的维度来匹配较大数组。维度扩展:从一维到四维数组,运算的本质没有变化,都是逐元素运算,唯一需要注意的是数组形状之间的匹配问题,广播机制会帮助处理这种情况。

keyboard专栏 661

手把手教你学simulink(11.6)--Simulink 航空航天场景:基于Simulink的飞机俯仰控制系统的数学模型

自动驾驶系统在航空航天领域具有重要应用,特别是在商业航空、军用航空和无人机等领域。PID控制器因其简单且有效的特性,被广泛应用于飞行控制。Simulink提供了一个强大的平台,用于建模、仿真和分析动态系统,非常适合设计和测试自动驾驶系统的控制器。通过本项目的实施,我们成功设计和仿真了一个用于控制飞机俯仰角的PID控制器。该项目展示了从系统建模、控制器设计、仿真验证到结果分析的完整流程,为PID控制器的设计提供了有价值的参考。希望这个实例能够为你的航空航天项目提供有用的指导。

MHD0815的博客 567

PMO与供应链管理的整合:端到端项目交付的优化策略

在当今全球化和市场竞争日益激烈的环境中,组织面临着前所未有的项目复杂性和交付压力。传统上相互独立的项目管理办公室(PMO)与供应链管理(SCM)正逐渐意识到:只有通过无缝整合,才能实现真正高效的端到端项目交付。本文深入探讨了PMO与供应链管理整合的战略价值、核心框架和实施路径,通过生动的比喻、实际案例和实用工具,展示了如何打破部门壁垒,构建协同高效的项目生态系统。无论您是PMO负责人、供应链专业人士还是高级管理层,都将从本文获得重塑项目交付模式、优化资源利用、降低风险并提升组织竞争力的宝贵见解和行动指南。

项目管理的博客 948

python numpy加一维度_【Python进阶】你真的明白NumPy中的ndarray吗?

欢迎来到专栏《Python进阶》。在这个专栏中,我们会讲述Python的各种进阶操作,包括Python对文件、数据的处理,Python各种好用的库如NumPy、Scipy、Matplotlib、Pandas的使用等等。我们的初心就是带大家更好的掌握Python这门语言,让它能为我所用。今天是《Python进阶》专栏的第三期,在本期中,我们将主要介绍Numpy的一些进阶知识。作者&...

weixin_39710561的博客 409

28、数字电路测试与半导体内存测试全解析

本文全面解析了数字电路中的顺序电路测试生成方法与半导体内存测试技术。内容涵盖顺序电路中的故障检测、多重观察测试、可驱动性分析、伪组合电路测试及初始化问题,并深入探讨了内存技术发展、故障模型、测试流程与未来趋势。重点介绍了DRAM、SRAM等主流内存类型的特点,以及制造和使用过程中面临的永久性与非永久性故障挑战,提出了基于故障模型的高效测试策略与优化方案。

go5gopher的博客 124

删除numpy linerspace 中的某个点_你真的明白NumPy中的ndarray吗?

如果你想掌握Python,那么NumPy是你必须要精通的。NumPy实际上是Python语言的一个扩展程序库,支持高维数组与矩阵运算,提供了大量的数学函数库。1 ndarray内存机制我们知道NumPy最重要的一个特点是其N维数组对象ndarray。通常ndarray内部由以下内容组成。数据指针:一个指向实际数据的指针;数据类型(dtype):描述了数组中每个元素所占的字节数;维度(shape):...

weixin_39666782的博客 240

手把手教你学Simulink实例--使用 Simulink 进行电力电子系统的小信号模型仿真

电力电子系统(Power Electronics System)包括各种功率转换器(如 DC-DC 转换器、逆变器等)。这些设备中的关键组件(如 MOSFET、IGBT、电容器、电感器等)不仅影响系统的性能,还直接关系到系统的稳定性、效率和可靠性。因此,在设计阶段进行详细的建模和仿真至关重要。小信号模型仿真的目的是通过线性化非线性系统来评估其动态特性,包括增益、相位裕度、带宽等指标。通过本教程,我们介绍了如何使用 Simulink 进行电力电子系统的小信号模型仿真。背景介绍。

MHD0815的博客 298

36、真核生物RNA PolII启动子预测相关研究

本文综述了真核生物RNA聚合酶II启动子预测的研究进展,涵盖转录调控机制、核心启动子元件(如TATA框、INR、GC框)、转录因子结合位点预测的挑战与方法。介绍了基于权重矩阵、神经网络和隐马尔可夫模型等多种启动子预测算法,并探讨了启动子分类策略及评分加权方法。通过Hertz-Stormo-Hartzell流程和基因微阵列分析实例,展示了如何识别保守调控序列。文章还总结了当前预测技术的局限性,提出了整合多组学数据、开发深度学习模型、加强实验验证等未来研究方向,旨在提升启动子识别的准确性与生物学意义。

palm99的专栏 187

合并矩阵numpy_你真的明白NumPy中的ndarray吗?

如果你想掌握Python,那么NumPy是你必须要精通的。NumPy实际上是Python语言的一个扩展程序库,支持高维数组与矩阵运算,提供了大量的数学函数库。1 ndarray内存机制我们知道NumPy最重要的一个特点是其N维数组对象ndarray。通常ndarray内部由以下内容组成。数据指针:一个指向实际数据的指针;数据类型(dtype):描述了数组中每个元素所占的字节数;维度(shape):...

weixin_36037280的博客 147

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

如果不懂 numpy,请别说自己是 python 程序员

大约七八年前,我曾经用 pyOpenGL 画过地球磁层顶的三维模型,这段代码至今仍然还运行在某科研机构里。在那之前,我一直觉得自己是一个合(you)格(xiu)的 python 程序员,似乎无所不能。但磁层顶模型的显示效果令我沮丧——尽管这个模型只有十几万个顶点,拖拽、缩放却非常卡顿。最终,我把顶点数量删减到两万左右,以兼顾模型质量和响应速度,才勉强交付了这个任务。从此我开始怀疑 python 的性能,甚至一度怀疑 python 是否还是我的首选工具。

Python作业辅导员 - 天元浪子 3万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【数据分析从入门到“入坑“系列】利用Python学习数据分析-Numpy中的ndarray

NumPy的ndarray:一种多维数组对象 NumPy最重要的一个特点就是其N维数组对象(即ndarray),该对象是一个快速而灵活的大数据集容器。你可以利用这种数组对整块数据执行一些数学运算,其语法跟标量元素之间的运算一样。 要明白Python是如何利用与标量值类似的语法进行批次计算,我先引入NumPy,然后生成一个包含随机数据的小数组: In [12]: import numpy as np ​ # Generate some random data In [13]: data = np.ra

码农-Vax天道的时间宝藏 2554

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

理解Numpy中的多维数据对象ndarray

NumPy的ndarray:一种多维数组对象 NumPy最重要的一个特点就是其N维数组对象(即ndarray),该对象是一个快速而灵活的大数据集容器。你可以利用这种数组对整块数据执行一些数学运算,其语法跟标量元素之间的运算一样。 要明白Python是如何利用与标量值类似的语法进行批次计算,先引入NumPy,然后生成一个包含随机数据的小数组: In [12]: import numpy as np ...

ljhihi的博客 889

numpy 中的ndarray数组返回符合特定条件的索引方法

在numpy的ndarray类型中,似乎没有直接返回特定索引的方法,我只找到了where函数,但是where函数对于寻找某个特定值对应的索引很有用,对于返回一定区间内值的索引不是很有效,至少我没有弄明白应该如何操作。下面先说一下where函数的用法吧。 (1)where函数的使用场景: 例如现在我生成了一个数组: [html] view plain copy p

qq_15514565的博客 1660

python 中 numpy array 中的维度_numpy的ndarray中的维度成为

🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化学习资料的朋友,可以戳这里获取。

2401_84140816的博客 782

python numpy array与ndarray_Python数据分析类库系列-Numpy之多维数组ndarray(1)

NumPy之于数值计算特别重要的原因之一,是因为它可以高效处理大数组的数据。这是因为:NumPy是在一个连续的内存块中存储数据,独立于其他Python内置对象。NumPy的C语言编写的算法库可以操作内存,而不必进行类型检查或其它前期工作。比起Python的内置序列,NumPy数组使用的内存更少。NumPy可以在整个数组上执行复杂的计算,而不需要Python的for循环。接下来我们通过一组实例来了解...

weixin_39572409的博客 327

array用法 numpy_Python数据分析 | 第四章 Numpy 基础之ndarray

第四章 Numpy 基础NumPy(Numerical Python的简称)是Python数值计算最重要的基础包。大多数提供科学计算的包都是用NumPy的数组作为构建基础。NumPy的部分功能如下:ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。用于对整组数据进行快速运算的标准数学函数(无需编写循环)。用于读写磁盘数据的工具以及用于操作内存映射文件的工具。线...

weixin_42504230的博客 414

Python数据分析之NumPy(2)——NumPy核心概念强化篇

本文作为学习NumPy快速教程之后的知识补充,只有真正、正确地理解了每个概念意思,才会再以后的学习过程中少走弯路。 在NumPy的学习中,我们最重要的学习目标就是它的ndarray对象。 1. 数组对象 三个基本对象: 1.ndarray本身 ndarray是同质的(homogenous):每个项目占用相同大小的内存块, 并且所有块都以完全相同的方式解释。 好处: 数组对象采用相同的数据类型...

Robin_Pi的博客 1038
上一篇: 【知乎直播】千奇百怪的CNN网络架构等你来
下一篇: 【杂谈】为什么有三AI自断财路,从来不接广告
言有三
言有三 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄15年 3635粉丝 976原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言有三

三人行必有AI

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值