numpy数组

  • 数组转置和轴对换
  • 通用函数
    • 1)一元函数
    • 2)二元函数
  • 数组排序
  • 一维数组方法
  • 布尔型数组方法

数组转置和轴对换

数组的转置(transpose)是很常见的一种矩阵变换,numpy数组实现转置的方式有两种,一种是使用数组的T属性,另一种是使用numpy中定义的 transpose方法

T属性的用法很简单,一个T属性就能使得矩阵的轴交换,

对于高维数组,使用transpose方法需要得到由轴编号组成的元组

这两个方法返回的都是视图,而不是复制的副本。

通用函数

以下介绍的函数都是元素级的函数,

1)一元函数


# 各元素绝对值
np.fabs(-1)                  # 返回 1.0
np.fabs([-1.2, 1.2])         # 返回 array([ 1.2, 1.2])# 各元素的平方
np.square([-1j, 1])          # 返回 array([-1.-0. j, 1.+0. j])    蓝色标记实部,红色标记虚部

各元素的平方根和 exp

对数函数使用

np.log([1,  np.e, np.e**2,  0])   # 返回array([ 0., 1., 2., -Inf]),默认的log是自然底数e,即 ln# 同样是计算 ln(1+x)两个方法得到的结果是不同的,log直接计算会有误差
np.log1p(1e-99)              # 返回1e-99,log1p计算的是 log(1+x)的值,即 ln(1+x)
np.log(1 + 1e-99)            # 返回 0.0x = np.array([0, 1, 2, 2**4])
np.log2(x)                    # 返回 array([-Inf, 0., 1., 4.]),计算 log2
np.log10([1e-15, -3.])        # 返回array([-15., NaN]),计算 log10

ln(1+x)使用泰勒展开,

f(x)= f(0)+ f′(0)x+ f″(0)x ²/ 2!+…+ fⁿ(0)… f(x)= ln(x+1) f(0)=ln1=0

可见,log的一系列方法计算传入的值可以是列表、数值和数组。

2)二元函数

#add的使用,The sum of x1 and x2, element-wise. Returns a scalar(标量) if both x1 and x2 are scalars.
np.add(1.0, 4.0)            #返回 5.0,两个都是标量则返回标量
x1 = np.arange(9.0).reshape((3, 3))        # 返回 array([[ 0., 1., 2.], #            [ 3., 4., 5.], #            [ 6., 7., 8.]])
x2 = np.arange(3.0)         # 返回 array([ 0., 1., 2.])
np.add(x1, x2)              # 返回 array([[ 0., 2., 4.], [ 3., 5., 7.], [ 6., 8., 10.]])#substract使用,The difference of x1 and x2, element-wise. Returns a scalar if both x1 and x2 are scalars.
np.subtract(1.0, 4.0)        # 返回 -3.0,两个都是标量则返回标量
x1 = np.arange(9.0).reshape((3, 3))
x2 = np.arange(3.0)
np.subtract(x1, x2)           # 返回 array([[ 0., 0., 0.], #            [ 3., 3., 3.], #            [ 6., 6., 6.]])#multiply使用
np.multiply(2.0, 4.0)         # 返回 8.0,两个都是标量则返回标量
x1 = np.arange(9.0).reshape((3, 3))
x2 = np.arange(3.0)
np.multiply(x1, x2)            # 返回 array([[ 0., 1., 4.], #            [ 0., 4., 10.], #            [ 0., 7., 16.]])#divide使用
np.divide(2.0, 4.0)            #返回 0.5
x1 = np.arange(9.0).reshape((3, 3))
x2 = np.arange(3.0)
np.divide(x1, x2)                # 返回 array([[ NaN, 1. , 1. ], #            [ Inf, 4. , 2.5], #            [ Inf, 7. , 4. ]])#power使用
# 传入一组基,和一个值
x1 = range(6)        #返回  [0, 1, 2, 3, 4, 5]
np.power(x1, 3)    #返回 array([ 0, 1, 8, 27, 64, 125])# 传入两组基,两组基必须是相同的空间复杂度
x2 = [1.0, 2.0, 3.0, 3.0, 2.0, 1.0]
np.power(x1, x2)    #返回 array([ 0., 1., 8., 27., 16., 5.])# 传入一组基和一个数组
x2 = np.array([[1, 2, 3, 3, 2, 1], [1, 2, 3, 3, 2, 1]])
# 返回 array([[1, 2, 3, 3, 2, 1],
#            [1, 2, 3, 3, 2, 1]])np.power(x1, x2)
# 返回 array([[ 0, 1, 8, 27, 16, 5],
#            [ 0, 1, 8, 27, 16, 5]])# 传入两个数组(形状必须相同)
l = np.array([[1, 2, 3, 3, 2, 1], [1, 2, 3, 3, 2, 1]])
# 返回 array([[1, 2, 3, 3, 2, 1],
#            [1, 2, 3, 3, 2, 1]])m = np.array([[1, 2, 4, 0, 2, 1], [1, 2, 3, 5, 10, 1]])
# 返回 array([[ 1,  2,  4,  0,  2,  1],
#            [ 1,  2,  3,  5, 10,  1]])np.power(l,m)
# 返回 array([[   1,    4,   81,    1,    4,    1],
#            [   1,    4,   27,  243, 1024,    1]])

max和min方法,只演示max,min同理



mod方法

greater、logical_end方法

If the inputs are ndarrays, then np.greater is equivalent to ‘>’.

np.greater([4,2],[2,2])          # 返回 array([ True, False], dtype=bool)
#当两个参数都是数组时候,相当于 > 符号
a = np.array([4,2])
b = np.array([2,2])
a > b                           # 返回 array([ True, False], dtype=bool)#logical_and方法
#传入两个布尔值
np.logical_and(True, False)     # 返回 False
#传入两个布尔型数组
np.logical_and([True, False], [False, False])        #返回 array([False, False])
#用于对一个数组添加条件,参数是两个对数组的判断
x = np.arange(5)np.logical_and(x>1, x<4)        #返回 array([False, False, True, True, False])

数组排序

数组的排序使用的是 sort方法

a = np.array([[1,4],[3,1]])         # array([[1, 4],#        [3, 1]])
np.sort(a)
# 返回  array([[1, 4],
#             [1, 3]])       sort along the last axis,默认是最后一个轴进行排序#axis参数使用
np.sort(a, axis=None)     # 返回 array([1, 1, 3, 4])  axis参数为None时候,将多维数组转为一维
np.sort(a, axis=0)        # 返回 array([[1, 1], #            [3, 4]])    也可以指定按照其他的轴进行排序#order参数使用
dtype = [('name', 'S10'), ('height', float), ('age', int)]
values = [('Arthur', 1.8, 41), ('Lancelot', 1.9, 38),('Galahad', 1.7, 38)]a = np.array(values, dtype=dtype)      # create a structured array,这个数组相当于有字段名
np.sort(a, order='height')
# 返回 array([('Galahad', 1.7, 38),
#            ('Arthur', 1.8, 41),
#            ('Lancelot', 1.8999999999999999, 38)],
# dtype=[('name', '|S10'), ('height', '<f8'), ('age', '<i4')])# Sort by age, then height if ages are equal,这里相当于设定了sort的顺序
np.sort(a, order=['age', 'height'])
# 返回 array([('Galahad', 1.7, 38),
#            ('Lancelot', 1.8999999999999999, 38),
#            ('Arthur', 1.8, 41)],
# dtype=[('name', '|S10'), ('height', '<f8'), ('age', '<i4')])

sort方法返回的是副本,而不是视图

一维数组方法


numpy的 unique方法,返回的是去重复后且经过排序的数组,

np.in1d方法

intersect1d、union1d和 setdiff1d方法

#传入列表或者数组都行
np.intersect1d([1, 3, 4, 3], [3, 1, 2, 1])        #返回 array([1, 3])a = np.array([1, 2, 3, 2, 4, 1])
b = np.array([3, 4, 5, 6])
np.setdiff1d(a, b)                            #返回 array([1, 2])

setxor1d方法

a = np.array([1, 2, 3, 2, 4])
b = np.array([2, 3, 5, 7, 5])
np.setxor1d(a,b)                            #返回 array([1, 4, 5, 7])

合并numpy数组使用 concatenate方法

concatenate方法可以同时合并两个以上的numpy数组。

布尔型数组方法

布尔型数组的true和false有时能被转换为 1和0。比如sum方法就是对布尔型数组中的True进行计数的方法。

还有两个方法any和all,两个方法都是用于判断,返回值是布尔值。其中,any用于判断布尔型数组中是否存在True;all则是判断布尔型数组中的元素是否都是True。

numpy数组——轴向操作及通用函数相关推荐

  1. 数据科学 IPython 笔记本 9.5 NumPy 数组上的计算:通用函数

    9.5 NumPy 数组上的计算:通用函数 本节是<Python 数据科学手册>(Python Data Science Handbook)的摘录. 译者:飞龙 协议:CC BY-NC-S ...

  2. 三位数组的轴python_关于numpy数组轴的使用详解

    概述 按照图一中aixs=0,对aixs=0上下对应的数据进行相加在学习numpy的时候,最难理解的就是轴的概念,我们知道坐标系中有轴的概念,那么两个轴是否有关联呢?为了便于理解,特写此博客进行梳理. ...

  3. Python基础 NumPy数组相关概念及操作

    NumPy是Python的一种开源的数值计算扩展库,提供 数组支持以及相应的高效处理函数,它包含很多功能,如创建n维数组()矩阵,对数组进行函数运算,数值积分,线性代数计算,傅里叶变换和随机数产生等. ...

  4. 运算库之numpy(数组的切片操作和数组shape的转换)

    1.数组的切片操作,主要是用来抓取数组中的一些数据,或者对其进行修改     1. 一维数组         和python_list的操作方式相同     2. 二维数组         查看下方是 ...

  5. python numpy数据类型_Python之numpy数组学习(一)

    原标题:Python之numpy数组学习(一) 我回来了. 前言 前面已经安装并学习了Python中的科学计算库,今天主要学习下numpy数组. Numpy数组对象 Numpy中的多维数组称为ndar ...

  6. c语言指针生成numpy数组,利用ctypes获取numpy数组的指针方法

    利用ctypes获取numpy数组的指针方法 如下所示: import numpy as np from ctypes import * a = np.asarray(range(16), dtype ...

  7. boost::python模块包装几个 C++ 函数 将二维数组操作为采用 NumPy 数组的 Python 函数作为参数

    boost::python模块包装几个 C++ 函数 将二维数组操作为采用 NumPy 数组的 Python 函数作为参数 实现功能 C++实现代码 实现功能 boost::python模块包装几个 ...

  8. NumPy — 创建全零、全1、空、arange 数组,array 对象类型,astype 转换数据类型,数组和标量以及数组之间的运算,NumPy 数组共享内存

    NumPy 简介 一个用 python 实现的科学计算包.包括: 1.一个强大的 N 维数组对象 Array : 2.比较成熟的(广播)函数库: 3.用于整合 C/C++ 和 Fortran 代码的工 ...

  9. numpy数组和矢量运算03

    numpy 基础:数组和矢量运算 xiaoyao NumPy是在⼀个连续的内存块中存储数据,独⽴于其他Python内置对象.NumPy的C语⾔编写的算法库可以操作内存,⽽不必进⾏类型检查或其它前期⼯作 ...

最新文章

  1. Go 学习笔记(76)— Go 标准库 net/http 创建客户端(发送 GET、POST 请求)
  2. Docker容器中数据两种持久化存储方式:卷和挂载宿主目录
  3. React Native学习之 ListView 的简单使用
  4. OpenStack潜力巨大:红帽打造生态系统
  5. 五轴数控转台_各式五轴加工中心的优缺点比较
  6. 深究AngularJS——过滤器(filter)
  7. C#中的DBNull、Null、String.Empty和“”
  8. js 操作Listbox js 获取Listbox选择的值的代码
  9. Centos5上安装JRE和LUMAQQ
  10. python廖老师_Python3.5-20190518-廖老师-自我笔记-面向对象
  11. 电脑小写字母怎么切换_笔记本键盘切换的操作流程
  12. 2020 年 9 月程序员工资统计,新出炉!
  13. atitit.无为而治在企业管理,国家治理,教育领域的具体思想与实践
  14. storm和vgj vgj_风暴很忙:VGJ.Storm新阵容亮相DAC预选赛
  15. 进程和线程常见的19个问题
  16. 蛋白质二级结构预测-Chou-Fasman预测方法
  17. 想转行做数据产品经理?这份书单赶紧收藏起来
  18. Java程序基础——异常
  19. adreno630gpu参数_高通骁龙AdrenoGPU天梯以及直观分析,推荐。
  20. js html url编码,js URLdecode()与urlencode方法支持中文解码

热门文章

  1. 经典SVM之SMO算法实现
  2. Python基础之基本结构
  3. Linux aarch64交叉编译之 Google filament引擎
  4. 如何解决HTTP Error 503. The service is unavailable问题
  5. (3)riak_core系统的工作方式
  6. android span图片居中,Android ImageSpan的图文居中对齐
  7. php添加背景图及设置格式,PHP添加PNG图片背景透明水印操作类定义与用法示例
  8. 【区域赛总结】2015ACM-ICPC北京区域赛
  9. linux gitlab安装教程,linux安装gitlab(官方)
  10. 使用SfntTool制作字体剪辑工具1 - 直接使用sfnttool.jar