python numpy学习笔记

1.np的重要属性

import numpy as np
np.ndim  # 数组的维数
np.shape  # 数组的形状
np.size  # 数组的元素个数
np.dtype  # 数组的元素类型

2.创建数组

1)np.array

你可以使用np.array直接用Python的元组和列表来创建,如果传递的是多层嵌套的序列,将创建多维数组。
在这里插入图片描述

2)np.arange

为了创建列表,NumPy提供了和 range 类似的函数,通过指定开始值、终值和步长来创建一维数组,同样为左闭右开。
在这里插入图片描述

3)使用zeros()、ones()、empty()函数

np.zeros(shape)  # 创建指定大小的数组,数组元素以 0 来填充。
np.ones(shape)  # 创建指定形状的数组,数组元素以 1 来填充。
np.empty(shape)  # 方法用来创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组。
np.full(shape, val)  # 根据shape生成一个数组,每个值都为val。
np.eye(n)  # 创建一个正方的n*n矩阵(即单位矩阵),对角线为1,其余全为0。

在这里插入图片描述

3.打印数组

当你打印一个数组时,NumPy显示数组的方式和嵌套的列表类似,但是会遵循以下布局:

  1. 最后一维从左到右显示。
  2. 第二维到最后一维从上到下显示。
  3. 剩下的同样从上到下显示,以空行分隔。
  4. 一维数组显示成一行,二维数组显示成矩阵,三维数组显示成矩阵的列表。

当一个数组元素太多,不方便显示时,NumPy会自动数组的中间部分,只显示边角的数据。
在这里插入图片描述

4.索引与切片

1)标准使用方法

数组元素的存取方法和Python的标准方法相同

a = np.arange(10)
a[5] # 用整数作为下标可以获取数组中的某个元素
a[3:5] # 用范围作为下标获取数组的一个切片,包括a[3]不包括a[5]
a[:5] # 省略开始下标,表示从a[0]开始
a[:-1] # 下标可以使用负数,表示从数组后往前数
a[2:4] = 100,101 # 下标还可以用来修改元素的值
a[1:-1:2] # 范围中的第三个参数表示步长,2表示隔一个元素取一个元素
a[::-1] # 省略范围的开始下标和结束下标,步长为-1,整个数组头尾颠倒
a[5:1:-2] # 步长为负数时,开始下标必须大于结束下标

在这里插入图片描述
和Python的列表序列不同,通过下标范围获取的新的数组是原始数组的一个视图。它与原始数组共享同一块数据空间。
在这里插入图片描述
2)使用整数序列

当使用整数序列对数组元素进行存取时,将使用整数序列中的每个元素作为下标,整数序列可以是列表或者数组。使用整数序列作为下标获得的数组不和原始数组共享数据空间。
在这里插入图片描述
3)使用布尔数组

当使用布尔数组b作为下标存取数组x中的元素时,将收集数组x中所有在数组b中对应下标为True的元素。使用布尔数组作为下标获得的数组不和原始数组共享数据空间,注意只对应于布尔数组,不能使用布尔列表。。
在这里插入图片描述
布尔数组一般不是手工产生,而是使用布尔运算的ufunc函数产生。
在这里插入图片描述
4)多维数组

  • 多维数组的存取和一维数组类似,因为多维数组有多个轴,因此它的下标需要用多个值来表示,NumPy采用组元(tuple)作为数组的下标。
  • 对多维数组的迭代是在第一维进行迭代的。
  • 如果需要遍历多维数组的所有元素,可以使用flat这个属性。
    在这里插入图片描述

5.数组相关操作

1)切分数组
在这里插入图片描述
2)拼接数组

numpy.concatenate 函数用于沿指定轴连接相同形状的两个或多个数组。
在这里插入图片描述

6.ufunc运算

需要注意的是数组必须具有相同的形状或符合数组广播规则。

1)一元ufunc

  • ceil(x): 向上最接近的整数,参数是 number 或 array
  • floor(x): 向下最接近的整数,参数是 number 或 array
  • rint(x): 四舍五入,参数是 number 或 array
  • negative(x): 元素取反,参数是 number 或 array
  • abs(x):元素的绝对值,参数是 number 或 array
  • square(x):元素的平方,参数是 number 或 array
  • aqrt(x):元素的平方根,参数是 number 或 array
  • sign(x):计算各元素的正负号, 1(正数)、0(零)、-1(负数),参数是 number 或 array
  • modf(x):将数组的小数和整数部分以两个独立数组的形式返回,参数是 number 或 array
  • isnan(x): 判断元素是否为 NaN(Not a Number),返回bool,参数是 number 或 array

2)二元ufunc

  • add(x, y): 元素相加,x + y,参数是 number 或 array
  • subtract(x, y): 元素相减,x – y,参数是 number 或 array
  • multiply(x, y): 元素相乘,x * y,参数是 number 或 array
  • divide(x, y): 元素相除,x / y,参数是 number 或 array
  • floor_divide(x, y): 元素相除取整数商(丢弃余数),x // y,参数是 number 或 array
  • mod(x, y): 元素求余数,x % y,参数是 number 或 array
  • power(x, y): 元素求次方,x ** y,参数是 number 或 array
  • equal(x1, x2 [, y]) : y = x1 == x2
  • not_equal(x1, x2 [, y]) : y = x1 != x2
  • less(x1, x2, [, y]) : y = x1 < x2
  • less_equal(x1, x2, [, y]) : y = x1 <= x2
  • greater(x1, x2, [, y]) : y = x1 > x2
  • greater_equal(x1, x2, [, y]) : y = x1 >= x2

7.函数库

1)比较运算

  • allclose(a, b[, rtol, atol, equal_nan]) 如果两个数组在容差范围内在元素方面相等,则返回True。
  • isclose(a, b[, rtol, atol, equal_nan]) 返回一个布尔数组,其中两个数组在容差范围内是元素相等的。
  • array_equal(a1, a2) 如果两个数组具有相同的形状和元素,则为真,否则为False。
  • array_equiv(a1, a2) 如果输入数组的形状一致且所有元素相等,则返回True。
  • greater(x1, x2, /[, out, where, casting, …]) 逐个元素方式返回(x1> x2)的真值。
  • greater_equal(x1, x2, /[, out, where, …]) 逐个元素方式返回(x1> = x2)的真值。
  • less(x1, x2, /[, out, where, casting, …]) 逐个元素方式返回。
  • less_equal(x1, x2, /[, out, where, casting, …]) 逐个元素方式返回。
  • equal(x1, x2, /[, out, where, casting, …]) 逐个元素返回(x1 == x2)。
  • not_equal(x1, x2, /[, out, where, casting, …]) 逐个元素返回 Return (x1 !=
    x2)。

2)三角函数

  • sin(x, /[, out, where, casting, order, …]) 逐个元素运算三角正弦函数。
  • cos(x, /[, out, where, casting, order, …]) 逐个元素运算三角余弦函数。
  • tan(x, /[, out, where, casting, order, …]) 逐个元素运算三角正切函数。
  • arcsin(x, /[, out, where, casting, order, …]) 逐个元素运算三角反正弦函数。
  • arccos(x, /[, out, where, casting, order, …]) 逐个元素运算三角反余弦函数。
  • arctan(x, /[, out, where, casting, order, …]) 逐个元素运算三角反正切函数。
  • hypot(x1, x2, /[, out, where, casting, …]) 给定直角三角形的“腿”,返回它的斜边。
  • arctan2(x1, x2, /[, out, where, casting, …]) 元素弧切线x1/x2正确选择象限。
  • degrees(x, /[, out, where, casting, order, …]) 将角度从弧度转换为度数。
  • radians(x, /[, out, where, casting, order, …]) 将角度从度数转换为弧度。
  • unwrap(p[, discont, axis]) 通过将值之间的差值更改为2*pi补码来展开。
  • deg2rad(x, /[, out, where, casting, order, …]) 将角度从度数转换为弧度。
  • rad2deg(x, /[, out, where, casting, order, …]) 将角度从弧度转换为度数。

3)求总和, 求乘积, 求差异

  • prod(a[, axis, dtype, out, keepdims]) 返回给定轴上的数组元素的乘积。
  • sum(a[, axis, dtype, out, keepdims]) 给定轴上的数组元素的总和。
  • nanprod(a[, axis, dtype, out, keepdims]) 返回给定轴上的数组元素的乘积。
  • nansum(a[, axis, dtype, out, keepdims]) 返回给定轴上的数组元素的总和。
  • cumprod(a[, axis, dtype, out]) 返回给定轴上元素的累积乘积。
  • cumsum(a[, axis, dtype, out]) 返回给定轴上元素的累积和。
  • nancumprod(a[, axis, dtype, out]) 返回给定轴上的数组元素的累积乘积。
  • nancumsum(a[, axis, dtype, out]) 返回给定轴上的数组元素的累积和。
  • diff(a[, n, axis]) 计算沿给定轴的第n个离散差。
  • ediff1d(ary[, to_end, to_begin]) 数组的连续元素之间的差异。
  • gradient(f, varargs, *kwargs) 返回N维数组的渐变。
  • cross(a, b[, axisa, axisb, axisc, axis]) 返回两个(数组)向量的叉积。
  • trapz(y[, x, dx, axis]) 沿给定的轴积分使用复合梯形规则运算。

4)平均数和差异

  • median(a[, axis, out, overwrite_input, keepdims]) 沿指定轴计算中值。
  • average(a[, axis, weights, returned]) 计算沿指定轴的加权平均。
  • mean(a[, axis, dtype, out, keepdims]) 沿指定的轴计算算术平均值。
  • std(a[, axis, dtype, out, ddof, keepdims]) 计算沿指定轴的标准偏差。
  • var(a[, axis, dtype, out, ddof, keepdims]) 计算沿指定轴的方差。
  • nanmedian(a[, axis, out, overwrite_input, …]) 在忽略NAS的情况下,沿指定的轴计算中值。
  • nanmean(a[, axis, dtype, out, keepdims]) 计算沿指定轴的算术平均值,忽略NAS。
  • nanstd(a[, axis, dtype, out, ddof, keepdims]) 计算指定轴上的标准偏差,而忽略NAS。
  • nanvar(a[, axis, dtype, out, ddof, keepdims]) 计算指定轴上的方差,同时忽略NAS。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值