python数组运算技巧_python 常用技巧 — 数组 (array)

本文详细介绍了如何使用NumPy库进行数组处理,包括数组的行除以行总和、计算行或列的平均值、加权平均值,以及求和等操作。同时,还涵盖了检查数组元素的布尔判断、查找满足条件的元素以及检查数组中是否包含零元素的方法。这些内容对于理解和操作NumPy数组至关重要。
摘要由CSDN通过智能技术生成

目录:

1. 数组每一行除以这一行的总数(numpy divide row by row sum)

2. 数组每一行或者每一列求平均 (python average array columns or rows)

3. 数组每一行或者每一列求加权平均 (python weight average array columns or rows)

4. 计算数组得到每一行或者每一列的和 (python sum columns of an array)

5. 生成指定维度的随机矩阵 (python generate random array)

6. 数组中对元素进行布尔类型判断 (python check elements in array with Boolean type)

7. 数组中是否存在满足条件的数 (python check if exsit element in array satisfies a condition)

8. 数组中所有元素是否有0元素 (python check whether all elements in numpy is zero)

内容:

1. 数组每一行除以这一行的总数(numpy divide row by row sum)

方法1:

>>> e

array([[ 0., 1.],

[ 2., 4.],

[ 1., 5.]])

>>> e/e.sum(axis=1)[:,None]

array([[ 0. , 1. ],

[ 0.33333333, 0.66666667],

[ 0.16666667, 0.83333333]])

方法2:

>>> (e.T/e.sum(axis=1)).T

array([[ 0. , 1. ],

[ 0.33333333, 0.66666667],

[ 0.16666667, 0.83333333]])

方法3:

>>> e/e.sum(axis=1, keepdims=True)

array([[ 0. , 1. ],

[ 0.33333333, 0.66666667],

[ 0.16666667, 0.83333333]])

2. 数组每一行或者每一列求平均 (python average array columns or rows)

import numpy as np

In [50]: a=np.arange(1,13).reshape(3,4)

In [51]: a

Out[51]:

array([[ 1, 2, 3, 4],

[ 5, 6, 7, 8],

[ 9, 10, 11, 12]])

In [52]: np.average(a, axis=1)

Out[52]: array([ 2.5, 6.5, 10.5])

In [53]: np.average(a, axis=0)

Out[53]: array([5., 6., 7., 8.])

3. 数组每一行或者每一列求加权平均 (python weight average array columns or rows)

>>> data = np.arange(6).reshape((3,2))

>>> data

array([[0, 1],

[2, 3],

[4, 5]])

>>> np.average(data, axis=1, weights=[1./4, 3./4])

array([0.75, 2.75, 4.75])

4. 计算数组得到每一行或者每一列的和 (python sum columns of an array)

>>>importnumpy asnp

>>>a =np.arange(12).reshape(4,3)>>>a.sum(axis=0)array([18,22,26])

>>>a.sum(axis=1)array([3,12,21,30])

5. 生成指定维度的随机矩阵 (python generate random array)

(1)生成指定维度的小数数组

In [1]: import numpy as np

In [2]: a=np.random.rand(3,4)

In [3]: a

Out[3]:

array([[0.03403289, 0.31416715, 0.42700029, 0.49101901],

[0.70750959, 0.4852401 , 0.11448147, 0.21570702],

[0.87512839, 0.82521751, 0.56915875, 0.67623931]])

(2)生成只能维度的整数数组

In [8]: np.random.randint(1,10,size=(3,4))

Out[8]:

array([[8, 1, 4, 3],

[7, 1, 8, 7],

[2, 5, 4, 3]])

6. 数组中对元素进行布尔类型判断 (python check elements in array with Boolean type)

>>> np.all([-1, 4, 5])

True

>>> np.all([[True,False],[True,True]])

False

>>> np.all([[True,False],[True,True]], axis=0)

array([ True, False])

// 如果要判断至少存在一个元素则使用

>>> np.any([-1, 0, 5])

True

>>> np.any([[True, False], [True, True]])

True

>>> np.any([[True, False], [False, False]], axis=0)

array([ True, False])

7. 数组中是否存在满足条件的数 (python check if exsit element in array satisfies a condition)

In [1]: import numpy as np

In [2]: a=np.arange(1, 13).reshape(3, 4)

In [3]: a

Out[3]:

array([[ 1, 2, 3, 4],

[ 5, 6, 7, 8],

[ 9, 10, 11, 12]])

In [4]: a>7

Out[4]:

array([[False, False, False, False],

[False, False, False, True],

[ True, True, True, True]])

In [5]: np.any(a>7)

Out[5]: True

In [6]: np.all(a>7)

Out[6]: False

8. 数组中所有元素是否有0元素 (python check whether all elements in numpy is zero)

In [1]: import numpy as np

In [2]: not np.any(np.array([0, 0, 2]))

Out[2]: False

In [3]: not np.any(np.array([0, 0, 0]))

Out[3]: True

// 计算非零个数再进行判断

In [4]: np.count_nonzero(np.array([0, 0, 2]))

Out[4]: 1

In [5]: np.count_nonzero(np.array([0, 0, 0]))

Out[5]: 0

// 用集合去掉重复元素再判断

In [6]: set(np.array([0, 0, 2]))

Out[6]: {0, 2}

In [7]: set(np.array([0, 0, 0]))

Out[7]: {0}

9.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值