鱼C论坛

 找回密码
 立即注册
查看: 12957|回复: 61

[技术交流] 科学计算,深度学习,神经网络Numpy【0】创建数组

[复制链接]
发表于 2017-7-19 00:25:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 MSK 于 2017-12-16 23:28 编辑
创建数组



俗话说:
万丈高楼平地起


神经网络,深度学习在流弊也要先从创建数组开始~


标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针。这样为了保存一个简单的[1,2,3],需要有3个指针和三个整数对象。对于数值运算来说这种结构显然比较浪费内存和CPU计算时间




函数库的导入

推荐方式:

  1. import numpy as np
复制代码

首先你得安装numpy才行~


.array()

以通过给array函数传递Python的序列对象创建数组,如果传递的是多层嵌套的序列,将创建多维数组.

  1. >>> a = np.array([1, 2, 3, 4])
  2. >>> b = np.array((5, 6, 7, 8))
  3. >>> c = np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]])
  4. >>> b
  5. array([5, 6, 7, 8])
  6. >>> c
  7. array([[1, 2, 3, 4],
  8.        [4, 5, 6, 7],
  9.        [7, 8, 9, 10]])
复制代码


数组的大小可以通过其shape属性获得:

  1. >>> a.shape
  2. (4,)
  3. >>> c.shape
  4. (3, 4)
复制代码

数组a的shape只有一个元素,因此它是一维数组。而数组c的shape有两个元素,因此它是二维数组,其中第0轴的长度为3,第1轴的长度为4。还可以通过修改数组的shape属性,在保持数组元素个数不变的情况下,改变数组每个轴的长度。

游客,如果您要查看本帖隐藏内容请回复



numpy数组与python列表类似,可以索引,可以通过索引修改值

  1. >>> temp = np.array([[2,3,4]])
  2. >>> temp
  3. array([[2, 3, 4]])
  4. >>> temp[0][1]
  5. 3
  6. >>> temp[0][1] = 30
  7. >>> temp
  8. array([[ 2, 30,  4]])
复制代码



通过修改.shape属性来修改数组轴的大小
  1. >>> c.shape
  2. (3, 4)
  3. >>> c.shape = 4,3
  4. >>> c
  5. array([[ 1,  2,  3],
  6.        [ 4,  4,  5],
  7.        [ 6,  7,  7],
  8.        [ 8,  9, 10]])
复制代码

游客,如果您要查看本帖隐藏内容请回复


数组c和d其实共享数据存储内存区域,类似python浅拷贝~
  1. >>> c
  2. array([[ 1,  2,  3,  4,  4,  5],
  3.        [ 6,  7,  7,  8,  9, 10]])
复制代码



.dtype


数组属性通过.dtype 获得
  1. >>> c
  2. array([[ 1,  2,  3,  4,  4,  5],
  3.        [ 6,  7,  7,  8,  9, 10]])
  4. >>> c.dtype
  5. dtype('int32')
复制代码



可以通过dtype参数在创建时指定元素类型:

  1. >>> np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]], dtype=np.float)
  2. array([[  1.,   2.,   3.,   4.],
  3.        [  4.,   5.,   6.,   7.],
  4.        [  7.,   8.,   9.,  10.]])
复制代码



arange()

arange函数类似于python的range函数,通过指定开始值终值步长来创建一维数组,注意数组不包括终值:

  1. >>> np.arange(0,1,0.1)
  2. array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9])
复制代码




linspace

inspace函数通过指定开始值终值元素个数来创建一维数组,可以通过endpoint关键字指定是否包括终值,缺省设置是包括终值:

  1. >>> np.linspace(0, 1, 12)
  2. array([ 0.        ,  0.09090909,  0.18181818,  0.27272727,  0.36363636,
  3.         0.45454545,  0.54545455,  0.63636364,  0.72727273,  0.81818182,
  4.         0.90909091,  1.        ])
复制代码



logspace

logspace函数和linspace类似,不过它创建等比数列,下面的例子产生1(10^0)到100(10^2)、有20个元素的等比数列:

都是10^n

  1. >>> np.logspace(0, 2, 20)
  2. array([   1.        ,    1.27427499,    1.62377674,    2.06913808,
  3.           2.6366509 ,    3.35981829,    4.2813324 ,    5.45559478,
  4.           6.95192796,    8.8586679 ,   11.28837892,   14.38449888,
  5.          18.32980711,   23.35721469,   29.76351442,   37.92690191,
  6.          48.32930239,   61.58482111,   78.47599704,  100.        ])
复制代码



fromfuction()

写一个Python的函数,它将数组下标转换为数组中对应的值,然后使用此函数创建数组

  1. >>> def func(i):
  2. ...   return i%4+1
  3. ...
  4. >>> np.fromfunction(func, (10,))
  5. array([ 1.,  2.,  3.,  4.,  1.,  2.,  3.,  4.,  1.,  2.])
复制代码



fromfunction函数的第一个参数为计算每个数组元素的函数,第二个参数为数组的大小(shape),因为它支持多维数组,所以第二个参数必须是一个序列,所以刚才采用(10,)

下面的例子中,输出的数组a中的每个元素a[i, j]都等于func2(i, j):

  1. >>> def func2(i, j):
  2. ...     return (i+1) * (j+1)
  3. ...
  4. >>> a = np.fromfunction(func2, (9,9))
  5. >>> a
  6. array([[  1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.],
  7.        [  2.,   4.,   6.,   8.,  10.,  12.,  14.,  16.,  18.],
  8.        [  3.,   6.,   9.,  12.,  15.,  18.,  21.,  24.,  27.],
  9.        [  4.,   8.,  12.,  16.,  20.,  24.,  28.,  32.,  36.],
  10.        [  5.,  10.,  15.,  20.,  25.,  30.,  35.,  40.,  45.],
  11.        [  6.,  12.,  18.,  24.,  30.,  36.,  42.,  48.,  54.],
  12.        [  7.,  14.,  21.,  28.,  35.,  42.,  49.,  56.,  63.],
  13.        [  8.,  16.,  24.,  32.,  40.,  48.,  56.,  64.,  72.],
  14.        [  9.,  18.,  27.,  36.,  45.,  54.,  63.,  72.,  81.]])
复制代码


游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 9荣誉 +35 鱼币 +40 贡献 +17 收起 理由
爱俯卧撑的123 + 5 + 5 + 3 鱼C有你更精彩^_^
壹条大菜狗 + 5 + 3
Python小白程亮 + 5 + 5 + 3
大头目 + 1 + 1 感谢楼主无私奉献!
秋名86 + 5 + 5 + 3 感谢楼主无私奉献!
新手·ing + 4 + 4
alltolove + 5 + 5 + 5 支持楼主!
不二如是 + 5 + 5 支持楼主!
小甲鱼 + 5 + 5 支持楼主!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-7-19 00:28:12 | 显示全部楼层
开始学习numpy,还请大大们看看
@~风介~ @小甲鱼 @不二如是
这东西你应该感兴趣吧~
@新手·ing
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-19 01:33:15 | 显示全部楼层
学习一下知识......
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-19 03:21:17 | 显示全部楼层
无名侠 发表于 2017-7-19 01:33
学习一下知识......

好久不见啊~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-19 06:29:48 | 显示全部楼层

追番中~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-19 09:00:42 | 显示全部楼层
无名侠 发表于 2017-7-19 01:33
学习一下知识......

欢迎~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-19 09:58:42 | 显示全部楼层
很好很强大
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-19 11:21:36 | 显示全部楼层
谢谢分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-19 11:35:04 | 显示全部楼层
交出教程!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-19 23:01:30 | 显示全部楼层
谢谢分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-2 11:52:07 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-8-2 12:38:48 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-2 15:25:07 | 显示全部楼层
学习下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-2 15:25:46 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-16 15:51:11 From FishC Mobile | 显示全部楼层
{:10_257
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-17 20:29:50 | 显示全部楼层
会ie,,,,,,,,,,,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-9-17 21:54:00 | 显示全部楼层
感谢分享,过来学习~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-18 08:19:08 From FishC Mobile | 显示全部楼层
学习了   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-27 12:12:41 | 显示全部楼层
来学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-27 18:04:59 From FishC Mobile | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 01:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表