MSK 发表于 2017-7-19 00:25:46

科学计算,深度学习,神经网络Numpy【0】创建数组

本帖最后由 MSK 于 2017-12-16 23:28 编辑

创建数组


俗话说:


万丈高楼平地起

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


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



函数库的导入

推荐方式:

import numpy as np
首先你得安装numpy才行~


.array()

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

>>> a = np.array()
>>> b = np.array((5, 6, 7, 8))
>>> c = np.array([,, ])
>>> b
array()
>>> c
array([,
       ,
       ])


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

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

**** Hidden Message *****


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

>>> temp = np.array([])
>>> temp
array([])
>>> temp
3
>>> temp = 30
>>> temp
array([[ 2, 30,4]])


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

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


.dtype


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


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

>>> np.array([,, ], dtype=np.float)
array([,
       ,
       ])


arange()

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

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



linspace

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

>>> np.linspace(0, 1, 12)
array([ 0.      ,0.09090909,0.18181818,0.27272727,0.36363636,
      0.45454545,0.54545455,0.63636364,0.72727273,0.81818182,
      0.90909091,1.      ])


logspace

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

都是10^n{:10_336:}

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



fromfuction()

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

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


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

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

>>> def func2(i, j):
...   return (i+1) * (j+1)
...
>>> a = np.fromfunction(func2, (9,9))
>>> a
array([,
       ,
       ,
       ,
       ,
       ,
       ,
       ,
       ])

**** Hidden Message *****

MSK 发表于 2017-7-19 00:28:12

开始学习numpy,还请大大们看看{:10_297:}
@~风介~ @小甲鱼 @不二如是
这东西你应该感兴趣吧~
@新手·ing

无名侠 发表于 2017-7-19 01:33:15

学习一下知识......

小甲鱼 发表于 2017-7-19 03:21:17

无名侠 发表于 2017-7-19 01:33
学习一下知识......

{:10_256:} 好久不见啊~

不二如是 发表于 2017-7-19 06:29:48


追番中~

MSK 发表于 2017-7-19 09:00:42

无名侠 发表于 2017-7-19 01:33
学习一下知识......

欢迎~

alltolove 发表于 2017-7-19 09:58:42

很好很强大{:10_256:}

stone1 发表于 2017-7-19 11:21:36

谢谢分享

新手·ing 发表于 2017-7-19 11:35:04

交出教程!

edition1002 发表于 2017-7-19 23:01:30

谢谢分享{:5_91:}

我叫赵硕 发表于 2017-8-2 11:52:07

学习

MSK 发表于 2017-8-2 12:38:48

我叫赵硕 发表于 2017-8-2 11:52
学习

欢迎~

youz0003 发表于 2017-8-2 15:25:07

学习下

MSK 发表于 2017-8-2 15:25:46

youz0003 发表于 2017-8-2 15:25
学习下

欢迎~

zengtaozt 发表于 2017-8-16 15:51:11

{:10_257:}{:10_257

鱼粉斯 发表于 2017-9-17 20:29:50

会ie,,,,,,,,,,,

fduhht 发表于 2017-9-17 21:54:00

感谢分享,过来学习~

suloman 发表于 2017-9-18 08:19:08

学习了   

tuxiaoqing 发表于 2017-9-27 12:12:41

来学习

Venido 发表于 2017-9-27 18:04:59

学习
页: [1] 2 3 4
查看完整版本: 科学计算,深度学习,神经网络Numpy【0】创建数组