NumPy是python下的计算库,被非常广泛地应用,尤其是近来的深度学习的推广。在这篇文章中,将会介绍使用numpy进行一些最为基础的计算。
NumPy vs SciPy
NumPy和SciPy都可以进行运算,主要区别如下
最近比较热门的深度学习,比如在神经网络的算法,多维数组的使用是一个极为重要的场景。如果你熟悉tensorflow中的tensor的概念,你会非常清晰numpy的作用。所以熟悉Numpy可以说是使用python进行深度学习入门的一个基础知识。
安装
liumiaocn:tmp liumiao$ pip install numpy Collecting numpy Downloading https://files.pythonhosted.org/packages/b6/5e/4b2c794fb57a42e285d6e0fae0e9163773c5a6a6a7e1794967fc5d2168f2/numpy-1.14.5-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (4.7MB) 100% |████████████████████████████████| 4.7MB 284kB/s Installing collected packages: numpy Successfully installed numpy-1.14.5 liumiaocn:tmp liumiao$
确认
liumiaocn:tmp liumiao$ pip show numpy Name: numpy Version: 1.14.5 Summary: NumPy: array processing for numbers, strings, records, and objects. Home-page: http://www.numpy.org Author: Travis E. Oliphant et al. Author-email: None License: BSD Location: /usr/local/lib/python2.7/site-packages Requires: Required-by: liumiaocn:tmp liumiao$
使用
使用numpy的数组
使用如下例子简单来理解一下numpy的数组的使用:
liumiaocn:tmp liumiao$ cat np-1.py #!/usr/local/bin/python import numpy as np arr = [1,2,3,4] print("array arr: ", arr) np_arr = np.array(arr) print("numpy array: ", np_arr) print("doulbe calc : ", 2 * np_arr) print("ndim: ", np_arr.ndim) liumiaocn:tmp liumiao$ python np-1.py ('array arr: ', [1, 2, 3, 4]) ('numpy array: ', array([1, 2, 3, 4])) ('doulbe calc : ', array([2, 4, 6, 8])) ('ndim: ', 1) liumiaocn:tmp liumiao$
多维数组&ndim/shape
ndim在numpy中指的是数组的维度,如果是2维值则为2,在下面的例子中构造一个步进为2的等差数列,然后将其进行维度的转换同时输出数组的ndim和shape的值以辅助对于ndim和shape含义的理解。
liumiaocn:tmp liumiao$ cat np-2.py #!/usr/local/bin/python import numpy as np arithmetic = np.arange(0,16,2) print(arithmetic) print("ndim: ",arithmetic.ndim," shape:", arithmetic.shape) #resize to 2*4 2-dim array arithmetic.resize(2,4) print(arithmetic) print("ndim: ",arithmetic.ndim," shape:", arithmetic.shape) #resize to 2*2*2 3-dim array array = arithmetic.resize(2,2,2) print(arithmetic) print("ndim: ",arithmetic.ndim," shape:", arithmetic.shape) liumiaocn:tmp liumiao$ python np-2.py [ 0 2 4 6 8 10 12 14] ('ndim: ', 1, ' shape:', (8,)) [[ 0 2 4 6] [ 8 10 12 14]] ('ndim: ', 2, ' shape:', (2, 4)) [[[ 0 2] [ 4 6]] [[ 8 10] [12 14]]] ('ndim: ', 3, ' shape:', (2, 2, 2)) liumiaocn:tmp liumiao$
另外也可以使用reshape进行维度的调整。
等差数列&等比数列
numpy和matlab写起来有很多函数基本一样,比如等比数列和等差数列可以使用linspace和logspace进行。
logspace缺省的时候指的是以10给底,但是可以通过指定base进行设定
liumiaocn:tmp liumiao$ cat np-3.py #!/usr/local/bin/python import numpy as np print("np.linspace(1,4,4):", np.linspace(1,4,4)) print("np.logspace(1,4,4):", np.logspace(1,4,4)) print("np.logspace(1,4,4,base=2):",np.logspace(1,4,4,base=2)) liumiaocn:tmp liumiao$ python np-3.py ('np.linspace(1,4,4):', array([1., 2., 3., 4.])) ('np.logspace(1,4,4):', array([ 10., 100., 1000., 10000.])) ('np.logspace(1,4,4,base=2):', array([ 2., 4., 8., 16.])) liumiaocn:tmp liumiao$
数组初始化
numpy提供了很方便的初始化的函数,比如
liumiaocn:tmp liumiao$ cat np-4.py #!/usr/local/bin/python import numpy as np print("np.zeros(6):",np.zeros(6)) print("np.zeros((2,3)):",np.zeros((2,3))) print("np.ones(6):",np.ones(6)) print("np.ones((2,3)):",np.ones((2,3))) print("np.random.random(6):",np.random.random(6)) print("np.random.random(6):",np.random.random(6)) print("np.random.random((2,3)):",np.random.random((2,3))) print("np.random.seed(1234)") np.random.seed(1234) print("np.random.random(6):",np.random.random(6)) print("np.random.seed(1234)") np.random.seed(1234) print("np.random.random(6):",np.random.random(6)) liumiaocn:tmp liumiao$ python np-4.py ('np.zeros(6):', array([0., 0., 0., 0., 0., 0.])) ('np.zeros((2,3)):', array([[0., 0., 0.], [0., 0., 0.]])) ('np.ones(6):', array([1., 1., 1., 1., 1., 1.])) ('np.ones((2,3)):', array([[1., 1., 1.], [1., 1., 1.]])) ('np.random.random(6):', array([0.06909968, 0.27468844, 0.59127996, 0.56973602, 0.45985047, 0.95384945])) ('np.random.random(6):', array([0.62996648, 0.2824114 , 0.2698051 , 0.09262053, 0.50862503, 0.96600255])) ('np.random.random((2,3)):', array([[0.66880129, 0.8834006 , 0.49458989], [0.28335563, 0.65711274, 0.76726504]])) np.random.seed(1234) ('np.random.random(6):', array([0.19151945, 0.62210877, 0.43772774, 0.78535858, 0.77997581, 0.27259261])) np.random.seed(1234) ('np.random.random(6):', array([0.19151945, 0.62210877, 0.43772774, 0.78535858, 0.77997581, 0.27259261])) liumiaocn:tmp liumiao$
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新动态
- DzintraErliha-Dreamscape(2024)[24Bit-96kHz]FLAC
- 群星.1999-上华世纪国语总冠军4CD【上华】【WAV+CUE】
- 叶丽仪.1992-仙鹤神针电视剧原声音乐专辑【星传真】【WAV+CUE】
- 陈柏宇.2011-QUINQUENNIUM【SONY】【WAV+CUE】
- 《51首热门当红歌曲 十大顶级发烧女声 3CD》[WAV+CUE][1.6GB]
- 《赵传 深受摇滚迷青睐的台湾音乐人 约定》[WAV+CUE][320MB]
- 《庄心妍 实力唱将 发烧音乐精选集》[WAV+CUE][380MB]
- [音展纪念碟]2006年《TAA台湾第十六届国际HI-ENDHI-FI音响展》2cd[WAV]
- 中国音乐地图之听见西藏山歌牧歌酒歌2020[WAV分轨]
- 王宏伟2017-永远的红飘带[太平洋影音][WAV+CUE]
- 费翔.1997-NOW现在【第一中国】【WAV+CUE】
- 新格合唱团.1981-我唱你和2辑(滚石新格民歌系列)【新格】【WAV+CUE】
- 陈柏宇.2011-QUINQUENNIUM【SONY】【WAV+CUE】
- 雨果唱片-《金唛系列-蔷薇依韵琼瑶》WAV
- 陈百强《凝望(2012华纳LPCD45限量版)[DMI]》[WAV整轨]