Numpy(一):属性、创建、切片和索引

Python 多维数组详解(numpy) 阅读详情

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含:

  • 一个强大的N维数组对象 ndarray
  • 广播功能函数
  • 整合 C/C++/Fortran 代码的工具
  • 线性代数、傅里叶变换、随机数生成等功能

1、数组创建

>>> import numpy as np
>>> arr1 = np.array([1,-1,4,3])
>>> arr1
array([ 1, -1,  4,  3])

#类型指定
>>> arr2 = np.array([1,-1,4,3], dtype='float')
>>> arr2
array([ 1., -1.,  4.,  3.])
>>> arr2 = np.array([1,-1,4,3], dtype='str')
>>> arr2

#数组嵌套
>>> arr3 = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
>>> arr3
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])

#范围列表
#numpy.arange(start, stop, step, dtype)
#根据 start 与 stop 指定的范围以及 step 设定的步长,生成一个 ndarray。

>>> np.arange(0, 10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> np.arange(0, 10, 0.5)
array([0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5, 5. , 5.5, 6. ,
       6.5, 7. , 7.5, 8. , 8.5, 9. , 9.5])

#等差数列
#np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

>>> np.linspace(1,10,10)
array([ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.])

#取值个数改为11
>>> np.linspace(1,10,11)
array([ 1. ,  1.9,  2.8,  3.7,  4.6,  5.5,  6.4,  7.3,  8.2,  9.1, 10. ])

#不取最后一个值

>>> np.linspace(1,10,10, endpoint = False)
array([1. , 1.9, 2.8, 3.7, 4.6, 5.5, 6.4, 7.3, 8.2, 9.1])

#log为底的等比数列
#np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)
#base 参数意思是取对数的时候 log 的下标。


>>> np.logspace(1,5,base=2,num=10)
array([ 2.        ,  2.72158   ,  3.70349885,  5.0396842 ,  6.85795186,
        9.33223232, 12.69920842, 17.28095582, 23.51575188, 32.        ])
>>> 2 ** np.linspace(1,5,10)
array([ 2.        ,  2.72158   ,  3.70349885,  5.0396842 ,  6.85795186,
        9.33223232, 12.69920842, 17.28095582, 23.51575188, 32.        ])

>>> np.zeros([1,5])
array([[0., 0., 0., 0., 0.]])
>>> np.zeros(6)
array([0., 0., 0., 0., 0., 0.])
>>> np.ones([7,6])
array([[1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1.]])
>>> np.eye(6)
array([[1., 0., 0., 0., 0., 0.],
       [0., 1., 0., 0., 0., 0.],
       [0., 0., 1., 0., 0., 0.],
       [0., 0., 0., 1., 0., 0.],
       [0., 0., 0., 0., 1., 0.],
       [0., 0., 0., 0., 0., 1.]])
>>> np.diag([4,5,8])
array([[4, 0, 0],
       [0, 5, 0],
       [0, 0, 8]])
>>> np.diag([4,5,8]) +1
array([[5, 1, 1],
       [1, 6, 1],
       [1, 1, 9]])

2、数组属性

NumPy 数组的维数称为秩(rank),秩就是轴的数量,即数组的维度,一维数组的秩为 1,二维数组的秩为 2,以此类推。

在 NumPy中,每一个线性的数组称为是一个轴(axis),也就是维度(dimensions)。比如说,二维数组相当于是两个一维数组,其中第一个一维数组中每个元素又是一个一维数组。所以一维数组就是 NumPy 中的轴(axis),第一个轴相当于是底层数组,第二个轴是底层数组里的数组。而轴的数量——秩,就是数组的维数。

很多时候可以声明 axis。axis=0,表示沿着第 0 轴进行操作,即对每一列进行操作;axis=1,表示沿着第1轴进行操作,即对每一行进行操作。

NumPy 的数组中比较重要 ndarray 对象属性有:

属性说明
ndarray.ndim秩,即轴的数量或维度的数量
ndarray.shape数组的维度,对于矩阵,n 行 m 列
ndarray.size数组元素的总个数,相当于 .shape 中 n*m 的值
ndarray.dtypendarray 对象的元素类型
ndarray.itemsizendarray 对象中每个元素的大小,以字节为单位
ndarray.flagsndarray 对象的内存信息
ndarray.realndarray元素的实部
ndarray.imagndarray 元素的虚部
ndarray.data包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性。
#三行四列
>>> arr3.shape
(3, 4)
>>> arr3
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])

#维度,2维
>>> arr3.ndim
2
>>> arr1.shape
(4,)
>>> arr1.ndim
1

#查看元素个数
>>> arr3.size
12

>>> arr3.dtype
dtype('int32')
>>> arr3 = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]],dtype = 'float')
>>> arr3
array([[ 1.,  2.,  3.,  4.],
       [ 5.,  6.,  7.,  8.],
       [ 9., 10., 11., 12.]])
>>> arr3.dtype
dtype('float64')
>>> 

 

3、索引和切片

ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样。

ndarray 数组可以基于 0 - n 的下标进行索引,切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组。

>>> import numpy as np
>>> a = np.arange(10)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> s = slice(2,7,2) # 从索引 2 开始到索引 7 停止,间隔为2
>>> a[s]
array([2, 4, 6])

#我们也可以通过冒号分隔切片参数 start:stop:step 来进行切片操作:
>>> b = a[2:7:2]
>>> b
array([2, 4, 6])
#冒号 : 的解释:如果只放置一个参数,如 [2],将返回与该索引相对应的单个元素。如果为 [2:],表示从该索引开始以后的所有项都将被提取。如果使用了两个参数,如 [2:7],那么则提取两个索引(不包括停止索引)之间的项。
>>> b = a[5] 
>>> b
5
>>> print(a[2:])
[2 3 4 5 6 7 8 9]
>>> print(a[2:5])
[2 3 4]

#多维数组
>>> a = np.array([[1,2,3],[3,4,5],[4,5,6]])
>>> a
array([[1, 2, 3],
       [3, 4, 5],
       [4, 5, 6]])

#从数组索引 a[1:] 处开始切割,即取第二,第三个列表
>>> print(a[1:])
[[3 4 5]
 [4 5 6]]

#切片还可以包括省略号 …,来使选择元组的长度与数组的维度相同。 如果在行位置使用省略号,它将返回包含行中元素的 ndarray。
>>> print (a[...,1]) # 第2列元素
[2 4 5]
>>> print (a[1,...]) # 第2行元素
[3 4 5]
>>> print (a[...,1:]) # 第2列及剩下的所有元素
[[2 3]
 [4 5]
 [5 6]]

4、NumPy 高级索引

整数数组索引:

以下实例获取数组中(0,0),(1,1)和(2,0)位置处的元素。

>>> x = np.array([[1,  2],  [3,  4],  [5,  6]]) 
>>> x
array([[1, 2],
       [3, 4],
       [5, 6]])
>>> y = x[[0,1,2],  [0,1,0]]  
#[0,1,2]代表第一行,第二行,第三行;[0,1,0]代表第一列,第二列,第一列
对应坐标即(0,0),(1,1),(2,0)
>>> y
array([1, 4, 5])

#以下实例获取了 4X3 数组中的四个角的元素。 行索引是 [0,0] 和 [3,3],而列索引是 [0,2] 和 [0,2]。
>>> x = np.array([[  0,  1,  2],[  3,  4,  5],[  6,  7,  8],[  9,  10,  11]])  
#我们的数组是:
>>> print (x)
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]]

>>> rows = np.array([[0,0],[3,3]])  #可以理解成[0,0,3,3]
>>> cols = np.array([[0,2],[0,2]]) #可以理解成[0,2,0,2]

>>> y = x[rows,cols]  

>>> print  ('这个数组的四个角元素是:')

这个数组的四个角元素是:
>>> print (y)
[[ 0  2]
 [ 9 11]]
#相比上种,值汇总在一起
>>> x[[0,0,3,3],[0,2,0,2]]
array([ 0,  2,  9, 11])


#可以借助切片 : 或 … 与索引数组组合。如下面例子:
>>> a = np.array([[1,2,3], [4,5,6],[7,8,9]])
>>> b = a[1:3, 1:3]
>>> c = a[1:3,[1,2]]
>>> d = a[...,1:]
>>> a
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
>>> b
array([[5, 6],
       [8, 9]])
>>> c
array([[5, 6],
       [8, 9]])
>>> d
array([[2, 3],
       [5, 6],
       [8, 9]])

布尔索引:

布尔索引通过布尔运算(如:比较运算符)来获取符合指定条件的元素的数组。

>>> import numpy as np 

#以下实例获取大于 5 的元素:
>>> x = np.array([[  0,  1,  2],[  3,  4,  5],[  6,  7,  8],[  9,  10,  11]])  
>>> print (x)
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]]
#大于 5 的元素是:
>>> print (x[x >  5])
[ 6  7  8  9 10 11]

#以下实例使用了 ~(取补运算符)来过滤 NaN。
>>> a = np.array([np.nan,  1,2,np.nan,3,4,5])  
>>> print (a[~np.isnan(a)])
[1. 2. 3. 4. 5.]

#以下实例演示如何从数组中过滤掉非复数元素。
>>> a = np.array([1,  2+6j,  5,  3.5+5j])  
>>> print (a[np.iscomplex(a)])
[2. +6.j 3.5+5.j]

 

花式索引:

指的是利用整数数组进行索引。

花式索引根据索引数组的值作为目标数组的某个轴的下标来取值。对于使用一维整型数组作为索引,如果目标是一维数组,那么索引的结果就是对应位置的元素;如果目标是二维数组,那么就是对应下标的行。

花式索引跟切片不一样,它总是将数据复制到新数组中。

 

#传入顺序索引数组
>>> x=np.arange(32).reshape((8,4))
>>> x
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15],
       [16, 17, 18, 19],
       [20, 21, 22, 23],
       [24, 25, 26, 27],
       [28, 29, 30, 31]])
>>> print (x[[4,2,1,7]]) #角标对应行
[[16 17 18 19]
 [ 8  9 10 11]
 [ 4  5  6  7]
 [28 29 30 31]]

#倒序
>>> print (x[[-4,-2,-1,-7]]) 
[[16 17 18 19]
 [24 25 26 27]
 [28 29 30 31]
 [ 4  5  6  7]]

#传入多个索引数组
>>> print (x[np.ix_([1,5,7,2],[0,3,1,2])]) #第一个数组用来标识行位置,第二个数组用来标识列位置
[[ 4  7  5  6]
 [20 23 21 22]
 [28 31 29 30]
 [ 8 11  9 10]]
>>> print (x[np.ix_([1,5,7,2],[3,1,2,0])])
[[ 7  5  6  4]
 [23 21 22 20]
 [31 29 30 28]
 [11  9 10  8]]

 

Python基础 NumPy数组相关概念及操作 NumPy是Python的一种开源的数值计算扩展库,提供 数组支持以及相应的高效处理函数,它包含很多功能,如创建n维数组()矩阵,对数组进行函数运算,数值积分,线性代数计算,傅里叶变换和随机数产生等。本文详细介绍了NumPy的知识及相关Python实现,是自学和复习Python很不错的工具。 阅读详情

相关推荐

Python Numpy的切片和索引及使用

索引是指对一个容器类型(例如序列、字符串)中元素的编号,可以通过这些编号来访问或修改容器类型中的元素。在Python中,容器类型的索引起始值为0,即第一个元素的索引为0,第二个元素的索引为1,以此类推。NumPy是一个强大的Python库,用于科学计算和数据分析,它提供了用于处理多维数组的功能。数组切片是一种在NumPy中常用的技术,用于获取数组的子集。让我们逐步介绍NumPy数组切片的格式、用法和示例代码。

pengp_123的博客 1504

Python基础 - NumPy数组

一、多维数组 Python提供的基础数据结构列表、元组等都是可以看做简单的一维数组,那么用到多维数组时该如何处理呢?因为当前的结构中的每个元素都是不限类型的,而每种结构也是一种类型,那么理所当然可以想到将基础数据结构嵌入到基础数据结构中得到多维数据结构: 二、NumPy NumPy是Python的一个扩展程序库,支持大量的为读书族与矩阵运算,并且针对数组运算提供了大量的数学函数库。...

只为龙舞的博客 4132

Python NumPy(4):切片和索引

ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样。ndarray 数组可以基于 0 - n 的下标进行索引,切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组。以上实例中,我们首先通过 arange() 函数创建 ndarray 对象。然后,分别设置起始,终止和步长的参数为 2,7 和 2。我们也可以通过冒号分隔切片参数冒号 : 的解释:如果只放置一个参数,如。

游王子og的博客 1051

一文弄懂numpy数组

前言学习数据分析,必绕不开numpy和pandas这两个库,numpy的ndarray数据结构和矩阵数据非常类似,最近搞科研的时候总是会用到,之前学的都忘记完了,所以,这次打算把numpy库的基本用法记录在一篇文章里,以便后面复习和使用。ndarray多维数组创建不要管复杂的概念,我们把多维数组看做成矩阵就行(实际使用中也是这样的),例如,下面的二维数据,我们就可以看做成2行3列的矩阵。impor...

罗罗攀 8782

【Numpy】数组的创建和常用函数(排序、连接、属性、reshape、索引和切片)

虽然Python列表可以在单个列表中包含不同的数据类型,但NumPy数组中的所有元素都应该是同构的。请记住,当您使用 reshape 方法时,要生成的数组需要具有与原始数组相同数量的元素。与典型的容器对象不同,不同的数组可以共享相同的数据,因此对一个数组所做的更改可能在另一个数组中可见。这是一个被广泛采用的约定,您应该遵循该约定,以便使用您的代码的任何人都可以轻松理解它。例如,如果您有一个包含 2 行和 3 列的二维数组,则数组的形状为。该函数创建一个数组,其初始内容是随机的,并且取决于内存的状态。

不负时光可怜人 2047

NumPy——切片和索引、高级索引、广播

ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样。ndarray 数组可以基于 0 - n 的下标进行索引,切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组。以上实例中,我们首先通过 arange() 函数创建 ndarray 对象。然后,分别设置起始,终止和步长的参数为 2,8 和 2。(终止部分和python的slice一样,默认是开区间)

a_blade_of_grass的博客 1152

Numpy索引和切片

特性Python 列表NumPy 数组返回结果返回新列表返回原数组的视图,数据共享多维切片只支持一维切片支持多维数组的切片操作步长支持正步长和负步长支持正负步长,且可以对每一维度使用不同步长高级索引(布尔、整数索引)不支持支持布尔索在 NumPy 中,整数索引(也称为整型数组索引)是一种强大的功能,允许你通过一个或多个整数数组来访问或修改数组中的特定元素。通过整数索引,你可以根据数组中的位置快速提取所需的数据。

m0_52854529的博客 1821

【Python语言基础】——Python NumPy 数组创建

在此数组中,最里面的维度(第 5 个 dim)有 4 个元素,第 4 个 dim 有 1 个元素作为向量,第 3 个 dim 具有 1 个元素是与向量的矩阵,第 2 个 dim 有 1 个元素是 3D 数组,而第 1 个 dim 有 1 个元素,该元素是 4D 数组。其元素为 0-D 数组的数组,称为一维或 1-D 数组。其元素为 1-D 数组的数组,称为 2-D 数组。其元素为 2-D 数组的数组,称为 3-D 数组。数组中的维是数组深度(嵌套数组)的一个级别。嵌套数组:指的是将数组作为元素的数组。

玄链教育 1244

NumPy库中的ndarray对象——ndarray的切片和索引

ndarray 数组可以基于 0 - n 的下标进行索引,切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组。对于使用一维整型数组作为索引,如果目标是一维数组,那么索引的结果就是对应位置的元素,如果目标是二维数组,那么就是对应下标的行。这个数组中的每个元素都是目标数组中某个维度上的索引值。第一个2代表的是start,7代表的是stop,第二个2代表的是step(步长)-------读取下标对应的元素-------

YuanShuo_的博客 3044

【Python Numpy教程】切片和索引

NumPy是Python中用于科学计算的重要库之一,它提供了多维数组对象和许多用于操作这些数组的函数。在本教程中,我们将探讨NumPy中的数组切片和索引,这是使用NumPy进行数据处理和分析时的关键概念。数组切片和索引使您能够访问、操作和修改NumPy数组的元素,对于数据处理和提取特定数据非常有用。在本教程中,我们介绍了如何使用NumPy进行数组切片和索引。这些功能使您能够有效地访问和操作NumPy数组中的元素。使用索引访问单个元素或使用负索引访问数组末尾的元素。

m0_62599305的博客 9183

记录一下本地部署Dify的坑

1. 截止2025-3-4为止,请注意,不要直接拉Dify的1.0.0版本。请先试用0.15.3版本。1.0.0有一个bug需要解决。3. 请使用docker-ce 新版本,docker-engine等老版本可能会有部分容器启动脚本执行莫名报错。2. 注意,请使用docker-compose V2版本,或者V1较高版本,否则会导致解析官方yml模板错误。

哈利路亚的收藏夹 5346

NumPy 切片和索引

NumPy切片和索引是操作多维数组的核心功能,支持高效数据访问和修改。基础操作包括一维/多维数组的简单索引和切片,高级索引提供布尔和整数数组索引方式。关键区别在于视图(共享内存)和副本(独立数据)的生成机制,切片返回视图而高级索引生成副本。实际应用中可用于数据筛选、子集提取和条件修改。最佳实践建议优先使用切片节省内存,明确副本需求,并用布尔索引简化条件筛选。注意索引越界和性能优化,尤其在大数组操作时。

likuoelie的博客 1043

PHY6252开发实战:从零构建BLE串口透传应用

本文详细介绍了PHY6252开发板在BLE串口透传应用中的实战经验,包括开发环境搭建、BLE串口透传例程解析、AT指令集实现与扩展、数据透传机制优化以及常见问题排查指南。通过智能家居遥控器项目案例,展示了PHY6252在低功耗物联网设备开发中的实际应用。

weixin_29183637的博客 314

【Numpy】03 数组的切片和索引操作深入详解

在数据分析和科学计算中,NumPy 是一个关键工具。本文将详细讲解 NumPy 数组的索引和切片操作。从基本概念入手,解释什么是索引和切片,以及它们的用途。通过一系列代码示例,你将学会如何在一维和多维数组中进行索引和切片操作,还会了解负索引的用法及其与 Python 列表切片的区别。无论你是新手还是希望巩固基础的老手,这篇博客都将为你提供实用的技巧和知识。快来探索 NumPy 数组的奇妙世界吧!

高校教师 | AI兴趣者 专注Python|大数据|LLM学习 分享浅显易懂知识体系 3340

端侧视觉赋能手游自动化:YOLOv8+NCNN实现低风险挂机与广告拦截

本文提出一种基于端侧AI的移动游戏自动化解决方案,采用YOLOv8目标检测和NCNN推理框架,结合AutoJS实现"感知-决策-执行"闭环。方案通过轻量化模型训练、多分辨率适配和行为拟态优化,解决了传统脚本的适配性和风控问题。关键技术包括:构建游戏专属数据集、模型量化优化、广告拦截和挂机功能实现,具有本地运行、安全稳定等特点,为个人开发者提供了一套完整的自动化开发框架。

milk416666的博客 1266

pytorch-cifar100学习资料汇总 - 基于PyTorch的CIFAR-100图像分类实践

pytorch-cifar100是一个基于PyTorch实现CIFAR-100数据集图像分类的开源项目。该项目实现了多种经典的深度学习网络模型,如ResNet、DenseNet、VGG等,为开发者提供了在CIFAR-100数据集上进行图像分类实验的代码范例。pytorch-cifar100项目为我们提供了在CIFAR-100数据集上进行图像分类实验的完整代码实现。无论你是想要学习PyTorch的使用,还是研究不同网络模型在CIFAR-100上的表现,这个项目都是一个很好的起点。

helloaiworld的博客 1125

numpy数据索引与切片

详细介绍numpy的切片和索引,尤其是使用:进行切片,并进一步介绍了整数数组索引、布尔索引和花式索引

weixin_43092663的博客 5178

自回归分布滞后模型 (ARDL)及 Stata 具体操作步骤

例如,Bahmani-Oskooee 和 Brooks(1999)研究了汇率波动与贸易收支之间的关系,发现汇率的变动在长期和短期内对贸易收支的影响存在差异,ARDL 模型能够有效地捕捉这种复杂的关系。它结合了自回归(Autoregressive,AR)模型和分布滞后(Distributed Lag,DL)模型的特点,能够同时考察变量之间的短期和长期关系。假设我们收集了一段时间内的居民消费和可支配收入数据,通过对这些数据进行分析和估计,可以得到模型的参数估计值,从而揭示消费与收入之间的短期和长期关系。

a519573917的博客 6096

Numpy 切片和索引

详细讲解numpy库中的切片和索引的作用

2301_82147854的博客 1229

深度学习优化算法解析(Momentum, RMSProp, Adam)

之前看了很多人介绍网络的优化器optimizer,无奈很多都把简单的东西讲的复杂化了,不容易让人懂,恰好之前看过吴恩达老师的最新的课程,这里结合老师讲的和个人想法写一下,方便别人同时也为自己以后回顾吧。 深度学习的优化算法主要有GD,SGD,Momentum,RMSProp和Adam算法吧,还有诸如Adagrad算法,不过大同小异,理解了前面几个,后面的也就引刃而解了。GD算法,SGD算法以及m

willduan的博客 12万+

ARTIX-7 GTP 3G-SDI 工程构建与调试实战

本文详细介绍了基于ARTIX-7 FPGA和GTP收发器的3G-SDI工程构建与调试实战。从基础概念解析到Vivado工程创建、GTP IP核配置、SDI IP核集成,再到系统集成与时钟域处理,提供了全面的技术指导。文章还分享了调试技巧、常见问题排查方法以及性能验证步骤,帮助开发者快速掌握3G-SDI视频传输技术的实现与优化。

weixin_30443813的博客 256

numpy 索引和切片

1. 索引元素 数组的索引和列表相似 2. 切片 数组的切片也和列表类似,并且支持负索引,左开右闭形式 省略参数写法 省略第一个参数,默认从开头开始取值(左开右闭) 省略第二个参数,默认取到结束,包括最后一个索引值 3. 应用举例 计算电影的每日票房收入 就是拿第二天的票房减去前一天的票房 4. 多维数组 多维数组的形状:shape -------2 行,4列 查看元素的总个数:size------8 查看数组的维度:ndim -...

Henry的博客 3616

手把手教你学SOC芯片架构--NoC(片上网络,Network on Chip)全方位解析

​、​。

MHD0815的博客 871

Numpy学习笔记——数据类型、数组属性、创建数组、切片与索引

本文仅作为学习使用,不作它用。

PuddleRubbish的博客 2161

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Numpy数据分析02——切片和索引

ndarray对象的内容可以通过索引或切片来访问和修改,与Python中list的切片操作一样。 ndarray数组可以基于0-n的下标进行索引 注意:区别在于数组切片是原始数组视图(这就意味着,如果做任何修改,原始数组都会跟着更改)。这也意味着,如果不想更改原始数组,我们需要进行显式的复制,从而得到它的副本(.copy())。 通过切片和copy复制原列表都是复制赋值,通过直接等于是引用赋值。 冒号:的解释:如果只放置一个参数,为什么切片和区间会忽略最后一个元素 计算机科学家edsger w.dij

qq_44777595的博客 3875

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

numpy的使用说明(三):numpy中切片和索引详解

1、切片 1)numpy中数组切片与原生python切片的不同点 数组切片返回的是原始数组的视图,原生python切片返回的是原始数组的浅拷贝。 操作如下: list1 = [1,2,3] display(list1) list2 = list1[1:] display(list2) # 此时,修改list2中某一个元素,查看原始列表的元素是否发生变化? list2[0] = 666 disp...

数据分析与统计学之美 2703

深度学习工具包 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")

上一篇: pandas简介及练习
下一篇: Numpy(二):广播和迭代
AA赵师傅
博客等级 码龄9年 89粉丝 124原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值