NumPy学习笔记三

NumPy算术运算

NumPy 数组的“加减乘除”算术运算,分别对应 add()、subtract()、multiple() 以及 divide() 函数。

numpy.reciprocal()

该函数对数组中的每个元素取倒数,并以数组的形式将它们返回。

# 注意此处有0
a = np.array([0.25, 1.33, 1, 0, 100])
# 数组a默认为浮点类型数据
print(a)
# 对数组a使用求倒数操作
print (np.reciprocal(a))
# b数组的数据类型为整形int
b = np.array([100], dtype=int)
print(b)
# 对数组b使用求倒数操作
print(np.reciprocal(b))

numpy.power()

该函数将 a 数组中的元素作为底数,把 b 数组中与 a 相对应的元素作幂 ,最后以数组形式返回两者的计算结果。

a = np.array([10, 00, 1000]) 
# a数组
print('我们的数组是;')
# 调用 power 函数
print(np.power(a, 2))
b = np.array([1, 2, 3]) 
print(b)
print(np.power(a, b))

numpy.mod()

返回两个数组相对应位置上元素相除后的余数,它与 numpy.remainder() 的作用相同 。

import numpy as np
a = np.array([11,22,33])
b = np.array([3,5,7])
#a与b相应位置的元素做除法
print( np.mod(a,b))
#remainder方法一样
print(np.remainder(a,b)) 

复数数组处理函数

numpy.real() 返回复数数组的实部;
numpy.imag() 返回复数数组的虚部;
numpy.conj() 通过更改虚部的符号,从而返回共轭复数;
numpy.angle() 返回复数参数的角度,该函数的提供了一个 deg 参数,如果 deg=True,则返回的值会以角度制来表示,否则以以弧度制来表示。

NumPy统计函数

amin() 沿指定的轴,查找数组中元素的最小值,并以数组形式返回;
amax() 沿指定的轴,查找数组中元素的最大值,并以数组形式返回。

import numpy as np
a = np.array([[3, 7, 5], [8, 4, 3], [2, 4, 9]]) 
print('数组a是:')
print(a)
# amin()函数
print(np.amin(a))
# 调用 amin() 函数,axis=1
print(np.amin(a, 1))
# 调用amax()函数
print(np.amax(a))
# 再次调用amax()函数
print(np.amax(a, axis=0))

numpy.ptp()

numpy.ptp() 用于计算数组元素中最值之差值,也就是(最大值 - 最小值)。

numpy.median()

numpy.median() 用于计算 a 数组元素的中位数(中值)

numpy.mean()

该函数表示沿指定的轴,计算数组中元素的算术平均值(即元素之总和除以元素数量)。

numpy.average()

加权平均值是将数组中各数值乘以相应的权数,然后再对权重值求总和,最后以权重的总和除以总的单位数(即因子个数)。
numpy.average() 根据在数组中给出的权重,计算数组元素的加权平均值。该函数可以接受一个轴参数 axis,如果未指定,则数组被展开为一维数组。

方差np.var()

方差,在统计学中也称样本方差,如何求得方差呢?首先我们要知道全体样本的的平均值,然后再求得每个样本值与均值之差的平方和,最后对差的平方和求均值。

标准差np.std()

标准差是方差的算术平方根,用来描述一组数据平均值的分散程度。若一组数据的标准差较大,说明大部分的数值和其平均值之间差异较大;若标准差较小,则代表这组数值比较接近平均值。

NumPy排序和搜索功能

常见三种排序算法:

种类速度最坏复杂度工作空间稳定性
quicksort(快速排序)1O(n^2)0不稳定
mergesort(归并排序)2O(n * log(n))~n/2稳定
heapsort(堆排序)3O(n * log(n))0不稳定

numpy.sort()

numpy.sort() 对输入数组执行排序,并返回一个数组副本。

numpy.sort(a, axis, kind, order)

参数说明:
a:要排序的数组;
axis:沿着指定轴进行排序,如果没有指定 axis,默认在最后一个轴上排序,若 axis=0 表示按列排序,axis=1 表示按行排序;
kind:默认为 quicksort(快速排序);
order:若数组设置了字段,则 order 表示要排序的字段。

numpy.argsort()

argsort() 沿着指定的轴,对输入数组的元素值进行排序,并返回排序后的元素索引数组。

import numpy as np 
a = np.array([90, 29, 89, 12]) 
print("原数组",a) 
sort_ind = np.argsort(a) 
print("打印排序元素索引值",sort_ind) 
#使用索引数组对原数组排序
sort_a = a[sort_ind] 
print("打印排序数组") 
for i in sort_ind: 
    print(a[i],end = " ")  

numpy.lexsort()

numpy.lexsort() 按键序列对数组进行排序,它返回一个已排序的索引数组,类似于 numpy.argsort()。

numpy.nonzero()

该函数从数组中查找非零元素的索引位置。

numpy.where()

numpy.where() 的返回值是满足了给定条件的元素索引值。

numpy.extract()

该函数的返回值是满足了给定条件的元素值。

numpy.argmax()

该函数返回最大值的的索引,与其相反的函数是 argmin() 求最小值索引

import numpy as np
a = np.array([[30,40,70],[80,20,10],[50,90,60]]) 
#a数组
print (a)
#argmax() 函数
print (np.argmax(a))
#将数组以一维展开
print (a.flatten())
#沿轴 0 的最大值索引:
maxindex = np.argmax(a, axis =  0) 
print (maxindex)
#沿轴 1 的最大值索引
maxindex = np.argmax(a, axis =  1) 
print (maxindex) 

NumPy副本和视图

对 NumPy 数组执行些函数操作时,其中一部分函数会返回数组的副本,而另一部分函数则返回数组的视图。本节对数组的副本和视图做重点讲解。
其实从内存角度来说,副本就是对原数组进行深拷贝,新产生的副本与原数组具有不同的存储位置。而视图可理解为对数组的引用,它和原数组有着相同的内存位置。

赋值

赋值操作是数组引用的一种方法。比如,将 a 数组赋值给变量 b,被赋值后的变量 b 与 a 组具有相同的内存 id。因此,无论操作 a、b 中哪个数组,另一个数组也会受到影响。

import numpy as np
a = np.array([[1, 2, 3, 4], [9, 0, 2, 3], [1, 2, 3, 19]])
print("原数组", a)
print("a数组的ID:", id(a))
b = a
print("数组b的id:", id(b))
b.shape = 4, 3
print("b数组形状的更改也会反映到a数组上:")
print(a)

ndarray.view()

ndarray.view() 返回一个新生成的数组副本,因此对该数组的操作,不会影响到原数组。
注意赋值与拷贝的关系

切片创建视图

使用切片可以创建视图数组,若要修改视图的就会影响到原数组。

import numpy as np
arr = np.arange(10)
print ('数组arr:')
print (arr)
#创建切片修改原数组arr
a=arr[3:]
b=arr[3:]
a[1]=123
b[2]=234
print(arr)

ndarray.copy()

该方法返回原数组的副本,对副本的修改不会影响到原数组。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值