Numpy数组

生成数组的方法

在numpy中一般是两种操作方式:

  • ndarray的变量名.方法()
  • np.函数名(),比如np.array()

生成0和1的数组:

在这里插入图片描述
在这里插入图片描述

numpy.zeros_like(a):a是一个ndarray,即产生一个维度和a一样的小的全0数组。

在这里插入图片描述
在这里插入图片描述

可以通过np中的arange()方法生成一个ndarray类的数组:

在这里插入图片描述
在这里插入图片描述

  • 上面的演变有可能在机器学习中遇到,所以,要认识一下。
    在这里插入图片描述
  • 指定数组形状的时候不仅可以使用(),还可以使用[]
    在这里插入图片描述
  • 在机器学习和深度学习的时候使用列表不报警告信息,使用元组的时候报警告信息。
  • 同理:ones_like()也是这样使用的。
    在这里插入图片描述

从现有数组生成(也就是对现在的数组进行复制或是引用):

在这里插入图片描述

关于array和asarray的不同:

在这里插入图片描述

分别使用array()和asarray()通过data数组创建出来新的数组:

在这里插入图片描述

  • 现在来修改data数组,分别来看看通过array()和asarray()创建出来的新数组有没有发生改变:
    在这里插入图片描述
  • 总结:array()会重新生成一个新的数组,而asarray()相当于索引的形式,并没有真正的创建一个新的数组,类似是一种引用的形式。

通过copy()创建数组

在这里插入图片描述
在这里插入图片描述

  • 修改data数组中元素的值:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 总结:copy()方法会重新生成一个新的数组。
生成固定范围的数组:
np.linspace(start, stop, num, endpoint, retstep, dtype)
  • start 序列的起始值
  • stop 序列的终止值
  • 如果endpoint为true,该值包含于序列中
  • num要生成的等间隔样例数量,默认为50
  • endpoint序列中是否baohanstop值,默认为true
  • retstep如果为true,返回样例
  • 以及连续数字之间的步长
  • dtype输出ndarray的数据类型
  • 其它还有
    • numpy.arange(start, stop, step, dtype)
    • numpy.logspace(start, stop, num, endpoint, base, dtype)
      在这里插入图片描述
      在这里插入图片描述
总结:

生成数组的方法

  • 生成0和1
    • np.zeros(shape)
    • np.ones(shape)
  • 从现有的数组中生成
    • np.array() np.copy() 深拷贝
    • np.asarray() 浅拷贝
  • 生成固定范围的数组
    • np.linspace(0,10,100)
      • [0,10] 等距离
    • np.aragne(a,b,c)
      • range(a,b,c)
        • [a,b) c是步长 [表示包含,)表示不包含。

生成随机数组:np.random模块

均匀分布:

在这里插入图片描述
在这里插入图片描述

生成随机数组

在这里插入图片描述

  • 可以画图看一下均匀分布的准不准:
    在这里插入图片描述
    在这里插入图片描述
正态分布

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

画图查看分布情况:

在这里插入图片描述
在这里插入图片描述

总结:
  • 生成随机数组
    • 分布状况 - 直方图
    • (1)均匀分布
      • 每组的可能性相等
    • (2)正态分布
      • 增幅、波动程度、集中程度、稳定性、离散程度
案例:随机生成8只股票2周的交易日涨幅数据。

在这里插入图片描述

获取第一个股票的前3个交易日的涨跌幅数据:

在这里插入图片描述

  • 上面在进行索引的时候第一个表示取行,第二个表示取列。也可以:
    在这里插入图片描述
  • 总结:通过上面这个需求,我们知道了对于一个二维数组我们如何进行索引。
那三维数组如何索引呢?

在这里插入图片描述

  • 0表示取三维数组中的第1个二维数组,2表示取二维数组中的第3个一维数组,1表示取一维数组中的第2个元素。
    在这里插入图片描述
    在这里插入图片描述
数组形状的修改:
  • 需求:让刚才的股票行、日期列反过来,变成日期行,股票列。
    在这里插入图片描述
尝试使用reshape()进行变换:

在这里插入图片描述
在这里插入图片描述

  • 提示:reshape有返回值,可以使用变量进行接收,不会对原数组进行修改。
  • 下面是通过对比这两次的数据:
    在这里插入图片描述
  • 总结:我们发现reshape()可以改变数组的形状,但并不是行列互换,而是将数据进行展平,然后再重新进行划分形状。
  • 在进行reshape()的时候还可以指定成-1:
    在这里插入图片描述
  • 下面的-1表示自动计算:我规定列为2列,那行是多少行呢?指定成-1表示自动计算出多少行。
    在这里插入图片描述
尝试使用resize()进行变换:

在这里插入图片描述

  • 上面的代码运行以后,我们发现并没有返回新的数据,而是在原数据上进行修改的。
    在这里插入图片描述
  • 再来对比这两次的数据:
    在这里插入图片描述
  • 总结:我们发现resize()并不是行列互换,而是将数据进行展平,然后再重新进行划分形状。
尝试使用T进行变换:

在这里插入图片描述

  • 再来对比两次的数据:
    在这里插入图片描述

总结:

形状修改

  • ndarray.reshape(shape)返回新的ndarray,原始数据没有发生改变。
  • ndarray.resize(shape)没有返回值,对原始的ndarray进行了修改
  • ndarray.T 转置 行变成列,列变成行
类型修改:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 将类型修改成int32:
    在这里插入图片描述
  • 将类型修改成int64:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 上面的提示信息为:反对使用tostring(),建议使用tobytes()。
    在这里插入图片描述
  • 提示:如果需要将数据序列化到本地,需要先tostring()或是tobytes(),这样就可以写入到本地了。
数组去重:

ndarray.unique():
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 也可以使用flatten()先展平,也就是变成一维的,再使用set()集合进行去重,然后再转换为ndarray类型即可:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值