NumPy的一些简单操作

NumPy是Python里面一个非常著名的科学计算库。

我们知道,在Python里面一切皆对象,这造成了在一些开发中,我们的Python占用内存会灰常灰常大,但是在NumPy里面,我们在NumPy Array中可以直接存储原始数据类型(int float),如图。

import numpy as np
# 创建一个简单的numpy array
a = np.array([1, 2, 3, 4])
# array([1, 2, 3, 4])
a[0], a[1]
# (1, 2)
a[1: -1]
# array([2, 3])
# 查看数组的数据类型 datatype
a.dtype
# dtype('int32')

NumPy也支持多维数组

A = np.array([
    [1, 2, 3],
    [4, 5, 6]
])
A.shape
# (2, 3)
# 查看数组的维度 dimension
A.ndim
# 2
A.size
# 6
B = np.array([
    [
        [12, 11, 10],
        [9, 8, 7],
    ],
    [
        [6, 5, 4],
        [3, 2, 1]
    ]
])
'''
 array([[[12, 11, 10],
        [ 9,  8,  7]],

       [[ 6,  5,  4],
        [ 3,  2,  1]]])
'''
B.shape
# (2, 2, 3)
# 查看数组的维度 dimension
B.ndim
# 3
B.size
# 12

注意,如果定义numpy array的时候维度不匹配,就会出现这种情况

C = np.array([
    [
        [12, 11, 10],
        [9, 8, 7],
    ],
    [
        [6, 5, 4],
    ]
])
C.dtype
# dtype('O')
C.ndim
# 1
C.shape
# (2,)

用索引定位元素 

A = np.array([
#    0  1  2
    [1, 2, 3], # 0
    [4, 5, 6], # 1
    [7, 8, 9]  # 2
])
A[1]
# array([4, 5, 6])

A[1][0]
# 4

A[1, 0]
# 4

A[0:2]
'''
array([[1, 2, 3],
       [4, 5, 6]])
'''
A[:, :2]
'''
array([[1, 2],
       [4, 5],
       [7, 8]])
'''

A[1] = np.array([10, 10, 10])
'''
array([[ 1,  2,  3],
       [10, 10, 10],
       [ 7,  8,  9]])
'''

 基本科学计算

a = np.array([1, 2, 3, 4])
a.sum()
# 10
a.mean()
# 2.5
a.std()
# 标准差 standard 1.118033988749895
a.var()
# 方差 variance 1.25
A = np.array([
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
])
A.sum(axis=0)
# array([12, 15, 18])
A.sum(axis=1)
# array([ 6, 15, 24])

对于多维array,只需要记住axis=0是对每一列操作,axis=1是对每一行操作

对于多维array,只需要记住axis=0是对每一列操作,axis=1是对每一行操作

对于多维array,只需要记住axis=0是对每一列操作,axis=1是对每一行操作

广播机制

a = np.arange(4)
# array([0, 1, 2, 3])
a + 10
# array([10, 11, 12, 13])

当我们执行a+10的时候,10会被python广播成和a一样维度的向量(10,10,10,10)然后直接与a相加,乘法也是类似的,这种机制使得NumPy的运算效率比纯Python的for循环高许多。

Mask

a = np.arange(4)
# array([0, 1, 2, 3])
a[[True, False, False, True]]
# array([0, 3])
a >= 2
# array([False, False,  True,  True])
a[a >= 2]
# array([2, 3])
a[a > a.mean()]
# array([2, 3])

通过逻辑运算符我们可以做出一个mask,通过对mask的定位我们可以精准筛选出我们需要的值,这在异常值处理,缺失值处理中有着很重要的作用。 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LoveData_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值