Numpy:数组与矢量计算

常见方法

命令说明
np.array(序列, [dtype=float64])创建ndarray
ndarray.shape返回各个维度的维数
ndarray.dtype返回数组元素的数据类型
np.nrange(n)创建ndarray
ndarray.astype(np.float64)动态转换dtype,调用astype会对原始数据进行拷贝
np.arange(20).reshape(4,5)reshape(维度的维数),动态生成多维数组
ndarray.ndim返回数组的维数
ndarray.copy()返回数组的副本

切片

  • 原始数据视图

    标量赋值给切片,该值会自动广播到整个选区.

    arr = np.arange(10)
    arr10[:2] = 12
    print(arr)        # [12 12  2  3  4  5  6  7  8  9]
    

    数组切片是原始数组视图, 视图上任何修改都会反映到原始数组. arr[:2].copy() 会得到数组的副本而非视图.

    arr_slice = arr[:2]
    arr_slice[1] = 12345
    print(arr, arr_slice)                      # [ 12 12345  2   3   4   5   6   7   8   9] [ 12 12345 ]
    
  • 索引切片

    通过索引切片选取数组中的数据,不会创建数据的副本,修改索引切片,原始数组也会发生改变.

    • 一维数组

      和python原始序列切片一样.
      在这里插入图片描述

    • 二维数组

      先取行,再取列.
      在这里插入图片描述

    • 三维数组

      生成三维数组,表示2个 2 x 5 二维数组.
      在这里插入图片描述
      第一个冒号:针对2个二维数组切片,第二个 :1针对第一行切片,第二个 2: 针对列切片.
      在这里插入图片描述

  • 布尔型索引

    names = np.array([‘Bob’,‘Joe’,‘Will’,‘Bob’,‘Will’,‘Joe’,‘Joe’])
    data = np.arange(28).reshape(7,4)

    等于:
    在这里插入图片描述
    不等于:
    在这里插入图片描述
    组合条件:&、|
    在这里插入图片描述
    通过布尔型数组设置值:
    在这里插入图片描述
    通过布尔型选取数组中的数据,总是创建数据的副本.
    在这里插入图片描述

  • 花式索引

    总是将数据复制到新数组中.
    指的是利用整数数组进行索引.
    以特定的顺序选取子集:
    在这里插入图片描述
    两个一维整数数组选取方形区域的索引:
    在这里插入图片描述

数组转置和轴对换

转置返回源数据的视图(不会进行任何复制操作).
数组不仅有transpose方法,还有一个特殊的T属性:

二维数组:就是简单的0轴和1轴互换:
在这里插入图片描述
高维数组,transpose需要得到一个由轴编号组成的元组:
a) 简单的0轴和1轴交换

原始arr维度为(2,3,4),因此0轴和1轴交换,变为(3,2,4),3个2x4的二维数组.
规律:将每个小数组进行拆分,从第二行开始,每一行形成单独一个元组的第一行.
在这里插入图片描述
b) 简单的1轴和2轴交换
原始arr维度为(2,3,4),因此1轴和2轴交换,变为(2,3,4),元组个数不会改变.
规律:只是小数组内部轴变换.
在这里插入图片描述
c) 简单的0轴和2轴交换
这个比较复杂,0轴和2轴交换,不仅小数组个数变化,而且小数组元素也发生变化
规律:一般需要将第一个小数组轴转换,分成2轴个数个小数组,然后再将其他的合并过来.
在这里插入图片描述

通用函数

通用函数是一种对ndarray中的数据执行元素级运算的函数.

一元ufunc:
在这里插入图片描述
二元ufunc:
在这里插入图片描述

利用数组进行数据处理

numpy数组可以将数据处理任务表述为简洁的数组表达式(否则需要编写循环)。用数组表达式代替循环做法,称为矢量化.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值