python.numpy.day15

10.数组元素的增删改查

10.1 resize

函数名称参数说明
resize(a, new_shape)a:操作的数组 new_shape:返回的数组的形状,如果元素数量不够,重复数组元素来填充新的形状返回指定形状的新数组
#resize:将元素组形状修改为新的形状,如果元素个数不够,则重复遍历元素组中的元素进行填充,如果元素组的
#多则丢弃。
import numpy as np

a = np.arange(10)
a1 = np.resize(a,(3,4))
print(a1)
a2 = np.resize(a,(2,2))
print(a2)

10.2 append

函数名称参数说明
append(arr, values, axis=None)arr:输入的数组 values:向 arr 数组中添加的值,需要和 arr 数组的形状保持一致 axis:默认为 None,返回的是一维数组;当 axis =0 时,追加的值会被添加到行,而列数保持不变,若 axis=1 则与其恰好相反在数组的末尾添加值,返回一个一维数组

案例:

#append 给数组添加新元素
a  = np.arange(6).reshape(2, 3)
#没有指定axis或者axis = none,则返回一维数组
a1 = np.append(a, [1, 2, 3])
print(a1)
#axis=0则按行添加,添加的value的维度要和元素组的维度一致
a2 = np.append(a, [[1,2,3]], axis=0)
print(a2)
# axis=1 按列添加,
a3 = np.append(a,  [[1, 1, 1], [1, 1, 1]], axis=1)
print(a3)

 

 

10.3 insert

函数名称参数说明
insert(arr, obj, values, axis)arr:输入的数组 obj:表示索引值,在该索引值之前插入 values 值 values:要插入的值 axis:默认为 None,返回的是一维数组;当 axis =0 时,追加的值会被添加到行,而列数保持不变,若 axis=1 则与其恰好相反沿规定的轴将元素值插入到指定的元素前

案例:

#insert;在指定位置添加值
#如果未指定axis ,则按照位置添加并返回一维数组
a = np.arange(6).reshape(2, 3)
a1 = np.insert(a, 1, [6])
print(a1)
#axis = 0 ,按行插入
a2 = np.insert(a , 1, [6] , axis=0)
print(a2)
#axis = 1 ,按列插入
a3 = np.insert(a, 0, [6] , axis=1)
print(a3)

a4 = np.insert(a, 1, [[6,7]], axis=1)
print(a4)

 

10.4 delete

函数名称参数说明
delete(arr, obj, axis)arr:输入的数组 obj:表示索引值,要删除数据的索引 axis:默认为 None,返回的是一维数组;当 axis =0 时,删除指定的行,若 axis=1 则与其恰好相反删掉某个轴上的子数组,并返回删除后的新数组

案例:

#delte:删除指定位置元素
#一维数组:
a = np.arange(6)
a1 = np.delete(a, 1)
print(a1)

#二维数组:
a = np.arange(6).reshape(2, 3)
#如果axis不指定,则按照一维数组的位置删除元素,返回一维数组
a1 = np.delete(a, [1 ,3])
print(a1)
a2 = np.delete(a, 1, axis=0)
print(a2)

#axis =1 ,按照列删除列的元素
a3 = np.delete(a, [0,1], axis=1)
print(a3)

 

10.5 argwhere

返回数组中非 0 元素的索引,若是多维数组则返回行、列索引组成的索引坐标

案例:

#argwhere:默认返回非0元素的坐标
a = np.arange(6).reshape(2, 3)
print(np.argwhere(a))
#也可以使用布尔索引去筛选指定的元素
print(np.argwhere(a>2))

#argmax:查找数组中最大值对应的下标
#argmin:查找数组最小值对应的下标
a = np.array([[1,23,3],[2,3,4]])
print(np.argmax(a))

10.6 unique

函数名称参数说明
unique(ar, return_index=False, return_inverse=False, return_counts=False, axis=None)ar:输入的数组 return_index:如果为 True,则返回新数组元素在原数组中的位置(索引) return_inverse:如果为 True,则返回原数组元素在新数组中的位置(逆索引) return_counts:如果为 True,则返回去重后的数组元素在原数组中出现的次数删掉某个轴上的子数组,并返回删除后的新数组

案例1:返回唯一元素的索引

#unique:数组元素去重
a =np.array([[1,23,3],[2,3,4]])
#默认去重
print(np.unique(a))
#return_index为True返回新数组在元素组中的位置索引
new, idx = np.unique(a, return_index=True)
print(new, idx)
#return_inverse为true返回原数组在新数组的位置
new, inv = np.unique(a, return_inverse=True)
print(new, inv)
#return_counts为true返回新数组中在原数组中出现的次数
new, counts = np.unique(a, return_counts=True)
print(new, counts)


#按照行列去重
a = np.array([[1,2],[3,4],[1, 2]])
print(np.unique(a,axis=0))
print(np.unique(a,axis=1))

 

11.1 amin() 和 amax()

  • 计算数组沿指定轴的最小值与最大值,并以数组形式返回

  • 对于二维数组来说,axis=1 表示沿着水平方向,axis=0 表示沿着垂直方向

案例:

#amin:amax;统计数组的最小值和最大值

array_one = np.array([[1,23,4,5,6],[1,2,333,4,5]])
#axis=0,按照垂直方向查找最小值和最大值
print(np.amin(array_one,axis=0))
print(np.amax(array_one,axis=0))
#axis =1 :按照水平方向查找最小值和最大值
print(np.amax(array_one,axis=1))
print(np.amin(array_one,axis=1))

#如果axis =None或者不指定,按照一维数组查找
print(np.amax(array_one))
print(np.amin(array_one))

11.2 ptp()

  • 计算数组元素中最值之差值,即最大值 - 最小值

  • 对于二维数组来说,axis=1 表示沿着水平方向,axis=0 表示沿着垂直方向

  • #ptp
    arr = np.array([[1, 2, 3], [4, 5, 6]])
    #axis=None或者不指定按照一维数组处理,查找最大值最小值,然后最大值减去最小值
    print(np.ptp(arr))
    #axis=0,按照垂直方向查找最大值最小值
    print(np.ptp(arr, axis=0))
    #axis=1,按照水平方向查找最大值最小值
    print(np.ptp(arr, axis=1))

    11.3 median()

    用于计算中位数,中位数是指将数组中的数据按从小到大的顺序排列后,位于中间位置的值。如果数组的长度是偶数,则中位数是中间两个数的平均值。


#meidian()中位数,先进行排序如果数组长度为奇数,返回数值的中间元素,
# 如果为偶数返回中间两个数的平均值
#axis =None或者不指定,按照一维数组求中位数
#axis =1,按照水平方向
#axis=0,按照垂直方向
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(np.median(arr))
print(np.median(arr, axis=0))
print(np.median(arr, axis=1))

 

11.5 average()

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

$$
加权平均值=\dfrac{∑_{i=1}^n(x_i⋅w_i)}{∑_{i=1}^nw_i}
$$

其中 xi是数组中的元素,wi是对应的权重。

如果所有元素的权重之和等于1,则表示为数学中的期望值。

#average:求加权平均值,数组元素乘以对应的权重之和除以所有权重之和
a = np.arange(6)
w = np.array([0.1, 0.2,0.3,0.1,0.2,0.1])
print(np.average(a,weights=w))

 

11.6 var()

在 NumPy 中,计算方差时使用的是统计学中的方差公式,而不是概率论中的方差公式,主要是因为 NumPy 的设计目标是处理实际数据集,而不是概率分布。

np.var 函数默认计算的是总体方差(Population Variance),而不是样本方差(Sample Variance)。

总体方差:

对于一个总体数据集 X={x1,x2,…,xN},总体方差的计算公式为:

$$
σ^2=\dfrac{1}{N}∑_{i=1}^N(x_i−μ)^2
$$

其中:

  • N是总体数据点的总数。

  • μ是总体的均值。

  • #var:方差
    #var:默认使用总体方差
    #ddof=1表示样本方差
    a = np.arange(6)
    print(np.var(a))
    print(np.var(a,ddof=1))

    11.7 std()

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

    #std:标准方差,就是方差开平方
    print(np.std(a))
    print(np.std(a, ddof=1))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值