最详细数据分析与建模Python numpy常用操作总结

一、数组或矩阵中替换大于或小于等于某个值的元素

最快和最简洁的方法是使用Numpy的内置索引。

import numpy as np

a = np.array([[1,2,3],
              [1,2,3],
              [1,2,3]])
a[a > 2] = 0
print(a)

结果:

[[1 2 0]
 [1 2 0]
 [1 2 0]]

以上实现的原理是a > 2返回的是矩阵大小的bool类型,如下

a > 2
Out[20]: 
array([[False, False,  True],
       [False, False,  True],
       [False, False,  True]])

二、把二维数组(矩阵)中行或列的值相加

1)、全部相加

import numpy as np
a = np.array([[1,2,3],
              [1,2,3],
              [1,2,3]])
print(a.sum())

结果

18

2)、行或列相加

print("行相加:")
print(a.sum(axis=1))
print("列相加:")
print(a.sum(axis=0))

结果

行相加:
[6 6 6]
列相加:
[3 6 9]

3)、指定行或列相加

print("倒数第一行相加:")
print(a[-1].sum())
print("倒数第一列相加:")
print(a[:, -1].sum())

结果

倒数第一行相加:
6
倒数第一列相加:
9

三、numpy生成序列

1、一定范围固定间隔数据

如下是生成从[10, 30)的间隔为5的序列

np.arange(10, 30, 5)
Out[2]: array([10, 15, 20, 25])
2、随机序列

如下为2行3列的0-1之间的随机数据,参数(2, 3)指定大小

np.random.rand(2, 3)
Out[3]: 
array([[0.69260095, 0.91129963, 0.29301557],
       [0.38907886, 0.53542189, 0.99137202]])

如下生成整形随机数,前两个参数指定范围,后一个参数指定大小(可以是单个数、一维矩阵、二维矩阵)

np.random.randint(0,10,(2,3))
Out[4]: 
array([[1, 1, 3],
       [5, 3, 4]])

np.random.randint(0,10)
Out[5]: 9

np.random.randint(0, 10, 5)
Out[6]: array([4, 8, 5, 5, 4])

如下功能和上面类似,二项分布函数,np.random.binomial(n,p,size=N),函数的返回值表示n中成功的次数

np.random.binomial(5, 0.5, size=(2,3))
Out[7]: 
array([[3, 3, 3],
       [4, 2, 5]])

如下为生成从0(参数1)开始,间隔为2*pi(参数2),的10个数(参数3),一般在函数自变量用的多

np.linspace(0, 2*np.pi, 10)
Out[18]: 
array([0.        , 0.6981317 , 1.3962634 , 2.0943951 , 2.7925268 ,
       3.4906585 , 4.1887902 , 4.88692191, 5.58505361, 6.28318531])

四、numpy数据处理

1、向下取整

就是去掉小数点后的

a
Out[22]: 
array([[9.23575386, 8.97291699, 0.91386481],
       [3.51247694, 6.29633935, 1.5733286 ]])

np.floor(a)
Out[23]: 
array([[9., 8., 0.],
       [3., 6., 1.]])
2、重新定义数组大小reshape成矩阵,把矩阵拉直成向量ravel
b
Out[25]: array([9, 4, 5, 8, 4, 9])

b.reshape(2, 3)
Out[26]: 
array([[9, 4, 5],
       [8, 4, 9]])

b.reshape(2, 3).ravel()
Out[27]: array([9, 4, 5, 8, 4, 9])
3、矩阵拼接操作
b
Out[34]: 
array([[9., 4., 5.],
       [8., 4., 9.]])

a
Out[35]: 
array([[9., 8., 0.],
       [3., 6., 1.]])
#横向拼接
np.hstack((a, b))
Out[37]: 
array([[9., 8., 0., 9., 4., 5.],
       [3., 6., 1., 8., 4., 9.]])
#纵向拼接
np.vstack((a, b))
Out[38]: 
array([[9., 8., 0.],
       [3., 6., 1.],
       [9., 4., 5.],
       [8., 4., 9.]])
4、矩阵拆分,和上面相反

np.hsplit()水平方向竖着切,np.vsplit()竖直方向水平切

a
Out[3]: 
array([[2., 5., 9., 6., 9., 4., 3., 8., 1., 2., 5., 8.],
       [1., 5., 7., 3., 0., 8., 6., 3., 3., 2., 2., 6.]])
#切分成3份
np.hsplit(a, 3)
Out[5]: 
[array([[2., 5., 9., 6.],
        [1., 5., 7., 3.]]),
 array([[9., 4., 3., 8.],
        [0., 8., 6., 3.]]),
 array([[1., 2., 5., 8.],
        [3., 2., 2., 6.]])]

#传入一个元组(3, 4),表示在第3和4处切分
np.hsplit(a, (3, 4))
Out[4]: 
[array([[2., 5., 9.],
        [1., 5., 7.]]),
 array([[6.],
        [3.]]),
 array([[9., 4., 3., 8., 1., 2., 5., 8.],
        [0., 8., 6., 3., 3., 2., 2., 6.]])]
5、数据复制

直接b = a赋值,b和a指向的同一个地址的数据,修改b,a也会变;c = a.view()浅复制不会指向一个地址,但修改c时a也会改;d = a.copy()这样这俩变量就没有任何关系的复制了。

6、找数据中最值的索引

数据a为上面4的,以下分别为求二维一维最值索引

#最大索引
a.argmax(axis=0)
Out[11]: array([0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0], dtype=int64)

a.argmax(axis=1)
Out[12]: array([2, 5], dtype=int64)
#最小索引
a.argmin(axis=0)
Out[15]: array([1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1], dtype=int64)

a.argmin(axis=1)
Out[16]: array([8, 4], dtype=int64)

a[1].argmin()
Out[17]: 4

五、numpy数据扩展

如下为扩展到2行倍,3列倍

b
Out[22]: array([5, 7, 9])

np.tile(b, (2, 3))
Out[23]: 
array([[5, 7, 9, 5, 7, 9, 5, 7, 9],
       [5, 7, 9, 5, 7, 9, 5, 7, 9]])

六、numpy与其他数据类型转化

1、numpy与list互转

ndarray 转 list

In [2]: a = np.array([1, 2, 3])

In [3]: a.tolist()
Out[3]: [1, 2, 3]

七、numpy常用数学和统计运算函数

函数函数说明
np.pi常数 π \pi π
np.e常数 e e e
np.fabs(arr)计算各元素的浮点型绝对值
np.ceil(arr)对各元素向上取整
np.floor(arr)对各元素向下取整
np.round(arr)对各元素四舍五入
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值