Numpy的基本介绍

Numpy的基本介绍(一)

1、Numpy总述

1.1 Introduction
  • Numpy是Python中在数据科学方面一个基础的包。它可以创建多维数组和派生对象,也可对数据进行多种操作,包括基础运算、log操作、形状变换、排序、切片、傅立叶变换、基本线性代数操作、基本统计操作、随机数模拟等。

  • Numpy的核心是ndarray object,它封装了数据类型相同的n维数组。在代码编译时可执行多种操作以便提高性能。Numpy数组和Python数组的差别主要有以下几点:

    1⃣️Numpy的数组在创建时便确定了数组的维度,不能根据后期需要动态改变。如果需要改变数组的维度,需要创建一个新数组,删删除原始数组。

    2⃣️Numpy的数组具有相同的数据类型,所需的内存大小一致。

    3⃣️需要进行大量高级数学运算时,Numpy数组具有更好的性能。和Python的内置数组相比,它具有低代码和高执行效率的特点。

    4⃣️越来越多基于Python包的科学和数学运算都使用了Numpy数组。它们都支撑Pytho数组的输入,然后转换为Numpy数组。另外,为了更好的使用Python中的数学科学工具,仅会使用内置序列并不足够,会使用Numpy是必须的。

1.2 Why is Numpy fast?

矢量化没有了繁复的循环、索引。当然,这些都是在预编译C代码的幕后发生。下面列举了矢量化代码的一些优点:

  • 矢量化代码简洁易读
  • 矢量化代码的代码量更少,Bug也会随之减少
  • 矢量化代码和标准数学操作的符号类似
  • 矢量化代码更“Pythonic”。不做矢量化代码整洁性差,多重循环使得阅读困难。

2、Numpy quickstart

2.1 Numpy 的加载
import numpy as np
2.2 Array的创建
函数说明
np.array可以传入python的list或者tuple,创建基本的numpy数组
np.zeros创建一个全0的数组
np.ones创建一个全1数组
np.empty创建一个随机初始化的数组,元素的值。元素值取决于内存状态。
np.arange类似于Python中的range的用法。但是返回的是一个数组
np.linspace当arange和浮点数一起使用时,由于浮点数精度的问题,不能去预测元素的个数。因此使用linspace接收我们想要的元素

说明:以上创建数组时均可指定数组元素的类型,以及数组的维度

示例:

# 例1:np.array
df = np.array([i for i in range(5)])
df

# 结果
array([0, 1, 2, 3, 4])

# 例2:np.zeros
df = np.zeros((3,4), dtype=np.float32)
df

# 结果
array([[0., 0., 0., 0.],
       [0., 0., 0., 0.],
       [0., 0., 0., 0.]], dtype=float32)
       
# 例3:np.ones
df = np.ones((3,2,2), dtype=np.int16)
df

# 结果
array([[[1, 1],
        [1, 1]],

       [[1, 1],
        [1, 1]],

       [[1, 1],
        [1, 1]]], dtype=int16)
        
# 例4:np.empty
 
df = np.empty((2,3))
df

# 结果
array([[0., 0., 0.],
       [0., 0., 0.]])
       
# 例5:np.arange
df = np.arange(10,30,5)
df

# 结果
array([10, 15, 20, 25])

# 例6:
df = np.linspace(0,2,9)
df

# 结果
array([0.  , 0.25, 0.5 , 0.75, 1.  , 1.25, 1.5 , 1.75, 2.  ])
2.3 基本操作

对数组元素的基本操作,就是创建以计算结果填充的新数组

运算符号符号含义
+对应元素相加
-对应元素相减
@(dot)矩阵乘法(满足矩阵乘法的要求)
*对应元素相乘

说明:加法、减法和乘法满足广播机制

2.4 numpy中的浅拷贝和深拷贝

浅拷贝:浅拷贝当修改一个变量时另外一个变量也会随之改变,浅拷贝的几种方式:=,view(),切片。

深拷贝:通过copy()实现。当修改其他变量时,被拷贝对象的值不会发生改变

详细参见官网: https://numpy.org/doc/stable/user/quickstart.html#basic-operations
View or Shallow Copy / Deep Copy

3、numpy.random模块的使用
函数名称Parameters参数说明函数解释
randnp.random.rand(d0, d1,…dn)d0参数决定数组的形状,必须为非负int输出给定形状的随机数
randintnp.random.randint(low, high, size, dtype)low,high取值的下限和上限;size输出数组的形状,dtype输出数据的类型返回从low到high的随机整数
randnnp.random.randn(d0,d1,…dn)位置参数,非负int从标准分布中返回一个随机数
randomnp.random.random(size=None)返回数组的形状半开区间内的随机浮点数
normalnp.random.normal(loc, scale, size)loc分布的均值、scale分布的方差,以及size决定返回数组的形状从高斯分布中返回一个随机数。在深度学习中对参数做初始化时常用

numpy官网:https://numpy.org/doc/stable/reference/random/generated/numpy.random.rand.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值