加入收藏 | 设为首页 | 会员中心 | 我要投稿 百客网 - 百科网 (https://www.baikewang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

Numpy多维数组基础及运算详解

发布时间:2022-10-18 10:47:16 所属栏目:PHP教程 来源:
导读:  简介: 互联网一线工作者,尊重原创并欢迎评论留言指出不足之处,也希望多些关注和点赞是给作者最好的鼓励 !概述

  Numpy是python数值计算非常重要的包,其他许多python科学计算的包都是以它为基础,比如
  简介: 互联网一线工作者,尊重原创并欢迎评论留言指出不足之处,也希望多些关注和点赞是给作者最好的鼓励 !概述
 
  Numpy是python数值计算非常重要的包,其他许多python科学计算的包都是以它为基础,比如:Scipy、Matplotlib、Pandas等,所以Numpy的重要性不言而喻。
 
  Numpy最大的优点之一是提供了高效的大数据数组处理能力,比python内置的list序列更少的内存占用及速度快了很多,因为Numpy是在一个连续的内存块中存储数据以及直接在整个数组上执行复杂计算。
 
  Numpy的多维数组
 
  Numpy最重要的一个特点是可以灵活高效的处理多维数组,并有一个多维数组的对象,即:numpy.ndarray
 
  ndarray对象内的元素必须是相同类型的。
 
  创建多维数组ndarray对象的方法
 
  1.使用array函数创建
 
  第一个参数可以是:可迭代对象、整数、浮点数、其他ndarray对象
 
  import numpy as np
  zarten_1 = np.array([1,2,3])
  print('zarten_1:', zarten_1, type(zarten_1))
  zarten_2 = np.array(range(10))
  print('zarten_2:', zarten_2, type(zarten_2))
  zarten_3 = np.array(zarten_2)
  print('zarten_3:', zarten_3, type(zarten_3))
  zarten_4 = np.array(5)
  print('zarten_4:', zarten_4, type(zarten_4))
  zarten_5 = np.array(6.8)
  print('zarten_5:', zarten_5, type(zarten_5))

  也可以是嵌套的序列生成的多维度的ndarray对象
 
  import numpy as np
  zarten_1 = np.array([[1,2,3], [4,5,6]])
  print(zarten_1)
  2.使用zeros函数创建全0数组
 
  第一个参数可以是:指定一个长度、可迭代对象来指定形状
 
  形状的指定一般是2个数字组成,第一个为行数,第二个为列数,如3行2列就是(3,2)
 
  若是3个数字组成,第一个为最外层的维数,第二个为次外层的维数,第三个为最里面有具体元素的个数。若是4个数字组成PHP多维数组,以此类推。
 
  import numpy as np
  zarten_1 = np.zeros(5)
  print('zarten_1:', zarten_1)
  zarten_2 = np.zeros([3,2])
  print('zarten_2:')
  print(zarten_2)
  zarten_3 = np.zeros([2,3,4])
  print('zarten_3:')
  print(zarten_3)
 
  3.使用ones函数创建全1的数组
 
  4.使用empty函数创建没有任何意义的数组
 
  ones和empty用法同zeros相同,这里将不再阐述
 
  5.使用arange函数直接创建连续数字的数组,跟python中的range函数类似
 
  import numpy as np
  zarten_1 = np.arange(10)
  print('zarten_1:', zarten_1)
  6.还可以使用random函数创建一些随机数
 
  random.randn(行, 列)创建具有正态分布的随机数的数组
 
  import numpy as np
  zarten_1 = np.random.randn(4,3)
  print(zarten_1)
  php 多维数组合并去重_php json多维数组_PHP多维数组
 
  random.randint(最小值,最大值,个数)创建随机的整数型数组
 
  import numpy as np
  zarten_1 = np.random.randint(2, 6, 10)
  print(zarten_1)
 
  以上为一部分常用的创建方式,其他方式可以查看numpy官方文档
 
  多维数组对象ndarray的数据类型
 
  1.可通过dtype属性查看数组内元素的数据类型
 
  import numpy as np
  zarten_1 = np.arange(10)
  print('zarten_1:', zarten_1)
  print(zarten_1.dtype)

  其实在创建ndarray对象时,可以指定数据类型,只需将dtype参数设置一下就可以了
 
  import numpy as np
  zarten_1 = np.array([1,2,3], dtype= np.float64)
  print('zarten_1:', zarten_1)
  print(zarten_1.dtype)
  同时还有一个简写模式,即类型代码,float64简写为:f8 因为占8个字节
 
  这段代码跟上面是等效的
 
  zarten_1 = np.array([1,2,3], dtype= 'f8')
 
  import numpy as np
  zarten_1 = np.array([1,2,3], dtype= 'f8')
  print('zarten_1:', zarten_1)
  print(zarten_1.dtype)
 
  2.若要改变已经创建好了的数组的数据类型,可以用ndarray对象的astype函数
 
  import numpy as np
  zarten_1 = np.array([1,2,3], dtype= 'f8')
  print('zarten_1:', zarten_1)
  print(zarten_1.dtype)
  zarten_2 = zarten_1.astype('u4')
  print('zarten_2:', zarten_2)
  print(zarten_2.dtype)
  也可将unicode数字字符类型转为相应的整型或浮点型。必须是纯数字字符,不然会报错
 
  import numpy as np
  zarten_1 = np.array(['1','2','3'])
  print('zarten_1:', zarten_1)
  print(zarten_1.dtype)
  zarten_2 = zarten_1.astype('u4')
  print('zarten_2:', zarten_2)
  print(zarten_2.dtype)

  < : 表示字节顺序,小端模式
 
  U : 表示Unicode类型
 
  1 : 表示元素的长度
 
  Numpy多维数组的运算
 
  简单的运算
 
  ndarray对象的运算效率极高,不用编写循环,运算直接应用在元素级上。
 
  import numpy as np
  zarten_1 = np.array([[1,2,3], [4,5,6]])
  zarten_2 = zarten_1 * 2
  print(zarten_2)
  上图可看到,每个元素都乘以2
 
  ndarray对象之间的运算,也是运用在元素级
 
  import numpy as np
  zarten_1 = np.array([[1,2,3], [4,5,6]])
  zarten_2 = np.array([7,8,9])
  print(zarten_1 + zarten_2)
  多维数组之间比较,会产生一个布尔类型的数组
 
  import numpy as np
  zarten_1 = np.array([[1,2,3], [24,25,26]])
  zarten_2 = np.array([7,8,9])
  print(zarten_1 > zarten_2)
  一元运算
 
  import numpy as np
  zarten = np.array([1,2,3,4,5])
  print(np.sqrt(zarten))
  print(np.sin(zarten))

  二元运算
 
  import numpy as np
  zarten_1 = np.array([1,2,3,4,88])
  zarten_2 = np.array([6,7,8,9,10])
  print(np.maximum(zarten_1, zarten_2))
  print(np.add(1,2))

  三元运算
 
  有时候np.where(cond,one,two) 函数可以很方便处理数组,参数:cond为条件,若数组元素级满足条件就置换为one,否则two
 
  import numpy as np
  zarten_1 = np.array([-1,-2,-3,4,88])
  zarten = np.where(zarten_1 <0, 0, 999)
  print(zarten)
  集合运算
 
  numpy中提供一些针对一维的集合运算,如unique函数、in1d函数等
 
  unique函数,跟python中的set集合类似,但unique函数的输出结果是排好序的
 
  import numpy as np
  zarten_1 = np.array([5,3,6,5,4,2,1,2])
  print(zarten_1)
  print('*' * 50)
  print(np.unique(zarten_1))
  php json多维数组_php 多维数组合并去重_PHP多维数组
 
  in1d()函数返回一个布尔型数组,用于判断一个数组的元素是否有在另一个数组内
 
  import numpy as np
  zarten_1 = np.array([5,3,6,5,4,2,1,2])
  print(zarten_1)
  print('*' * 50)
  print(np.in1d(zarten_1, [5,3]))
 

(编辑:百客网 - 百科网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!