博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
numpy学习小结
阅读量:5058 次
发布时间:2019-06-12

本文共 7448 字,大约阅读时间需要 24 分钟。

安装numpy包

pip3 install numpy

导包

import numpy as np
""" ndarray.ndim:数组的维数。在Python世界中,维数称之为rank ndarray.shape:数组的维度。这是一系列数字,长度由数组的维度(ndim)决定。例如:长度为n的一维数组的shape是n。一个n行m列的矩阵的shape是n,m ndarray.size:数组中所有元素的数量 ndarray.dtype:数组中元素的类型,例如numpy.int32, numpy.int16或者numpy.float64 ndarray.itemsize:数组中每个元素的大小,单位为字节 ndarray.data:存储数组元素的缓冲。通常我们只需要通过下标来访问元素,而不需要访问缓冲 """
a = np.array([1,2,3])print(a)print("a's ndim {}".format(a.ndim))print("a's shape {}".format(a.shape))print("a's size {}".format(a.size))print("a's dtype {}".format(a.dtype))print("a's itemsize {}".format(a.itemsize))# [1 2 3]# a's ndim 1# a's shape (3,)# a's size 3# a's dtype int32# a's itemsize 4
b = np.array([[1,2,3],[4,5,6]])print(b)print("b's ndim {}".format(b.ndim))print("b's shape {}".format(b.shape))print("b's size {}".format(b.size))print("b's dtype {}".format(b.dtype))print("b's itemsize {}".format(b.itemsize))# [[1 2 3]#  [4 5 6]]# b's ndim 2# b's shape (2, 3)# b's size 6# b's dtype int32# b's itemsize 4
""" zeros:用来创建元素全部是0的数组 ones:用来创建元素全部是1的数组 empty:用来创建未初始化的数据,因此是内容是不确定的 arange:通过指定范围和步长来创建数组 linespace:通过指定范围和元素数量来创建数组 random:用来生成随机数 """
c = np.zeros((2,3))     print(c)# [[0. 0. 0.]#  [0. 0. 0.]]d = np.ones((3,2))print(d)# [[1. 1.]#  [1. 1.]#  [1. 1.]]e = np.empty((2,3))print(e)# [[6.23042070e-307 3.56043053e-307 1.37961641e-306]#  [6.23039015e-307 1.69115935e-306 2.11392033e-307]]f = np.arange(1,2,0.3)print(f)# [1.  1.3 1.6 1.9]g = np.linspace(1,2,3)print(g)# [1.  1.5 2. ]h = np.random.random((2,3))print(h)# [[0.64425744 0.4496131  0.88346286]#  [0.3458989  0.89334331 0.61867948]]
""" 除了生成数组之外,当我们已经持有某个数据之后,我们可能会需要根据已有数组来产生一些新的数据结构,这时候我们可以使用下面这些函数:     reshape:根据已有数组和指定的shape,生成一个新的数组     vstack:用来将多个数组在垂直(v代表vertical)方向拼接(数组的维度必须匹配)     hstack:用来将多个数组在水平(h代表horizontal)方向拼接(数组的维度必须匹配)     hsplit:用来将数组在水平方向拆分     vsplit:用来将数组在垂直方向拆分 下面我们通过一些例子来进行说明。 为了便于测试,我们先创建几个数据。这里我们创建了:     zero_line:一行包含3个0的数组     one_column:一列包含3个1的数组     a:一个2行3列的矩阵     b:[11, 20)区间的整数数组 """
zero_line = np.zeros((1,3))one_column = np.ones((3,1))# [[0. 0. 0.]]# [[1.]#  [1.]#  [1.]]a = np.array(([1,2,3],[4,5,6]))b = np.arange(11,20)# [[1 2 3]#  [4 5 6]]# [11 12 13 14 15 16 17 18 19]#数组b原先是一个一维数组,现在我们通过reshape方法将其调整成为一个3行3列的矩阵#这里的第二参数设为-1,表示根据实际情况自动决定。由于原先是9个元素的数组,因此调整后刚好是3X3的矩阵b = b.reshape(3,-1)print(b)# [[11 12 13]#  [14 15 16]#  [17 18 19]]# 竖直方向拼接数组c = np.vstack((a,b,zero_line))print(c)# [[ 1.  2.  3.]#  [ 4.  5.  6.]#  [11. 12. 13.]#  [14. 15. 16.]#  [17. 18. 19.]#  [ 0.  0.  0.]]a = a.reshape(3,-1)print(a)# [[1 2]#  [3 4]#  [5 6]]# 水平方向拼接数组d = np.hstack((a,b,one_column))print(d)# [[ 1.  2. 11. 12. 13.  1.]#  [ 3.  4. 14. 15. 16.  1.]#  [ 5.  6. 17. 18. 19.  1.]]# 指定数量进行水平拆分e = np.hsplit(d,3)print(e)# [array([[1., 2.],#        [3., 4.],#        [5., 6.]]), array([[11., 12.],#        [14., 15.],#        [17., 18.]]), array([[13.,  1.],#        [16.,  1.],#        [19.,  1.]])]# 指定列数进行水平拆分f = np.hsplit(d,(1,3))print(f)# [array([[1.],#        [3.],#        [5.]]), array([[ 2., 11.],#        [ 4., 14.],#        [ 6., 17.]]), array([[12., 13.,  1.],#        [15., 16.,  1.],#        [18., 19.,  1.]])]# 竖直拆分g = np.vsplit(d,3)print(g)# [array([[ 1.,  2., 11., 12., 13.,  1.]]), array([[ 3.,  4., 14., 15., 16.,  1.]]), array([[ 5.,  6., 17., 18., 19.,  1.]])]
""" 索引 """
base_data = np.arange(100,200)print(base_data)print(base_data[10])"""[100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199]110"""every_five = np.arange(0,100,5)print(every_five)# [ 0  5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95]print(base_data[every_five])# [100 105 110 115 120 125 130 135 140 145 150 155 160 165 170 175 180 185 190 195]a = np.array([(1,2),[10,20]])print(a)# [[ 1  2]#  [10 20]]print(base_data[a])# [[101 102]#  [110 120]]base_data2 = base_data.reshape(10, -1)print(base_data2)"""[[100 101 102 103 104 105 106 107 108 109] [110 111 112 113 114 115 116 117 118 119] [120 121 122 123 124 125 126 127 128 129] [130 131 132 133 134 135 136 137 138 139] [140 141 142 143 144 145 146 147 148 149] [150 151 152 153 154 155 156 157 158 159] [160 161 162 163 164 165 166 167 168 169] [170 171 172 173 174 175 176 177 178 179] [180 181 182 183 184 185 186 187 188 189] [190 191 192 193 194 195 196 197 198 199]]"""print(base_data2[-1,-1])  # 199# 切片索引从0开始print(base_data2[2, :])# [120 121 122 123 124 125 126 127 128 129]print(base_data2[:,3])# [103 113 123 133 143 153 163 173 183 193]
""" 数字运算 """
 
base_data = (np.random.random((5,5))-0.5) * 100"""[[ -4.99893607  39.77193936 -15.46706727  16.80691258 -38.51945213] [-49.06612449  49.35329335  -0.4216167   13.12483635 -41.60876645] [-43.18292355 -25.25568989   0.44448147  -2.89856688 -24.13873839] [ 32.75485688  11.0737333   18.77766764  22.513295     3.48913839] [-10.96543248 -40.42721305  30.38299405 -32.77083843  40.39435566]]"""print(np.amin(base_data))# -49.06612449306485print(np.amax(base_data))# 49.35329334672289print(np.average(base_data))# -2.0333544702011186print(np.sin(base_data))"""[[ 0.95922553  0.87660695 -0.23857285 -0.89073028 -0.73137794] [ 0.93180625 -0.7908454  -0.40923611  0.52988566  0.69474259] [ 0.71691953 -0.12263914  0.42998979 -0.24064058  0.83821559] [ 0.9732393  -0.99694714 -0.07182638 -0.4987417  -0.34059131] [ 0.99954577 -0.40180897 -0.858805   -0.97678732  0.43167496]]"""print(np.sum(base_data))-50.83386175502796
 
""" 矩阵运算 """
base_data = np.floor((np.random.random((5,5))-0.5) * 100)"""[[ 39. -20. -44. -45.   6.] [ -5.  44.  42. -33.  -6.] [-14.  -9. -13. -30.  -4.] [ 31. -50.   5.   7.  45.] [ 39. -16.  42.  39. -24.]]"""# 矩阵转置print(base_data.T)  或着print(base_data.transpose())"""[[ 39.  -5. -14.  31.  39.] [-20.  44.  -9. -50. -16.] [-44.  42. -13.   5.  42.] [-45. -33. -30.   7.  39.] [  6.  -6.  -4.  45. -24.]]"""matri_one = np.ones((5,5))"""[[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.]]"""minu_one = np.dot(matri_one, -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.]]"""print(np.dot(base_data,minu_one))"""[[-32. -32. -32. -32. -32.] [-84. -84. -84. -84. -84.] [-72. -72. -72. -72. -72.] [ 51.  51.  51.  51.  51.] [ 46.  46.  46.  46.  46.]]"""
""" 随机数 生成20个随机数,它们每一个都是[0.0, 1.0)之间 根据指定的shape生成随机数 生成指定范围内([0, 100))的指定数量(20)的随机整数 对已有的数据([0, 1, 2, ..., 19])的顺序随机打乱顺序 """
 
print("random: {}\n".format(np.random.random(20)))"""random: [0.105123   0.90013672 0.58255936 0.27769054 0.00139627 0.69873449 0.32550338 0.72112185 0.35799445 0.72302835 0.67139936 0.30039148 0.83770639 0.07878046 0.77641452 0.6054163  0.72421693 0.77157218 0.08644228 0.65128463]"""print("rand: {}\n".format(np.random.rand(3, 4)))"""rand: [[0.73446485 0.30451937 0.49029421 0.62473099] [0.09829422 0.55518899 0.83903237 0.71153898] [0.11826133 0.53736883 0.47913765 0.0438171 ]]"""print("randint: {}\n".format(np.random.randint(0, 100, 20)))"""randint: [39 51 97 22 92 29 19 54 92 30  5 61 26 19 92 59 23 64 85 97]"""print("permutation: {}\n".format(np.random.permutation(np.arange(20))))"""permutation: [ 5  0 14 10  6 13 11  7 18 19  2 12 17  3  9  8  1 15  4 16]"""
 

 

 
 
 
 
 

转载于:https://www.cnblogs.com/gjq168/p/9687876.html

你可能感兴趣的文章
App右上角数字
查看>>
从.NET中委托写法的演变谈开去(上):委托与匿名方法
查看>>
六、PowerDesigner 正向工程 和 逆向工程 说明
查看>>
小算法
查看>>
201521123024 《java程序设计》 第12周学习总结
查看>>
贪吃蛇游戏改进
查看>>
新作《ASP.NET MVC 5框架揭秘》正式出版
查看>>
“前.NET Core时代”如何实现跨平台代码重用 ——源文件重用
查看>>
【POJ1845】Sumdiv(数论/约数和定理/等比数列二分求和)
查看>>
在WPF中使用Caliburn.Micro搭建MEF插件化开发框架
查看>>
IdentityServer4-用EF配置Client(一)
查看>>
UWP: 掌握编译型绑定 x:Bind
查看>>
asp.net core系列 35 EF保存数据(2) -- EF系列结束
查看>>
WPF程序加入3D模型
查看>>
WPF中实现多选ComboBox控件
查看>>
读构建之法第四章第十七章有感
查看>>
C#中的IEnumerable<T>知识点
查看>>
android访问链接时候报java.net.MalformedURLException: Protocol not found
查看>>
dwz ie10一直提示数据加载中
查看>>
Windows Phone开发(4):框架和页 转:http://blog.csdn.net/tcjiaan/article/details/7263146
查看>>