Numpy的基本操作


1 生成数组的方法

1.1 生成0和1的数组

  • np.ones(shape, dtype)
  • np.ones_like(a, dtype)
  • np.zeros(shape, dtype)
  • np.zeros_like(a, dtype)
import numpy as np
np.ones([4,8])

返回结果:

import numpy as np
ones = np.zeros([4,8])
np.zeros_like(ones)

返回结果:

1.2 从现有数组生成

1.2.1 生成方式

  • np.array(object, dtype)

  • np.asarray(a, dtype)

a = np.array([[1,2,3],[4,5,6]])
# 从现有的数组当中创建
a1 = np.array(a)
# 相当于索引的形式,并没有真正的创建一个新的
a2 = np.asarray(a)

1.2.2 关于array和asarray的不同   【a[0,0] 可以取出第一个元素1】

1.3 生成固定范围的数组

1.3.1 np.linspace (start, stop, num, endpoint)  【num:生成等间隔的多少个】

  • 创建等差数组 — 指定数量
  • 参数:
    • start:序列的起始值
    • stop:序列的终止值
    • num:要生成的等间隔样例数量,默认为50
    • endpoint:序列中是否包含stop值,默认为ture
# 生成等间隔的数组
np.linspace(0, 100, 11)

返回结果:

1.3.2 np.arange(start,stop, step, dtype)  【step:没间隔多少生成数据】

  • 创建等差数组 — 指定步长
  • 参数
    • step:步长,默认值为1
np.arange(10, 50, 2)

返回结果:

1.3.3 np.logspace(start,stop, num)  【生成以10的N次幂的数据】

  • 创建等比数列

  • 参数:

    • num:要生成的等比数列数量,默认为50
# 生成10^x
np.logspace(0, 2, 3)

返回结果:

1.4 生成随机数组

1.4.1 使用模块介绍

  • np.random模块

1.4.2 正态分布

一、基础概念复习:正态分布

a. 什么是正态分布

正态分布是一种概率分布。正态分布是具有两个参数μ和σ的连续型随机变量的分布,第一参数μ是服从正态分布的随机变量的均值,第二个参数σ是此随机变量的方差,所以正态分布记作N(μ,σ )

b. 正态分布的应用

生活、生产与科学实验中很多随机变量的概率分布都可以近似地用正态分布来描述。

c. 正态分布特点

μ决定了其位置,其标准差σ决定了分布的幅度。当μ = 0,σ = 1时的正态分布是标准正态分布。

标准差如何来?

  • 方差

是在概率论和统计方差衡量一组数据时离散程度的度量

其中M为平均值,n为数据总个数,σ 为标准差,σ ^2​可以理解一个整体为方差

  • 标准差与方差的意义

可以理解成数据的一个离散程度的衡量

二、正态分布创建方式

  • np.random.randn(d0, d1, …, dn)

    功能:从标准正态分布中返回一个或多个样本值

  • np.random.normal(loc=0.0scale=1.0size=None)

    loc:float

    ​ 此概率分布的均值(对应着整个分布的中心centre)

    scale:float

    ​ 此概率分布的标准差(对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高)

    size:int or tuple of ints

    ​ 输出的shape,默认为None,只输出一个值

  • np.random.standard_normal(size=None)

    返回指定形状的标准正态分布的数组。

举例1:生成均值为1.75,标准差为1的正态分布数据,100000000个

x1 = np.random.normal(1.75, 1, 100000000)

返回结果:

示例代码:

from matplotlib import pyplot as plt
import numpy as np# 生成均匀分布的随机数
x1 = np.random.normal(1.75, 1, 100000000)# 画图看分布状况
# 1)创建画布
plt.figure(figsize=(20, 10), dpi=100)# 2)绘制直方图
plt.hist(x1, 1000)# 3)显示图像
plt.show()

例如:我们可以模拟生成一组股票的涨跌幅的数据

举例2:随机生成4支股票1周的交易日涨幅数据

4支股票,一周(5天)的涨跌幅数据,如何获取?

  • 随机生成涨跌幅在某个正态分布内,比如均值0,方差1

股票涨跌幅数据的创建

import numpy as np# 创建符合正态分布的4只股票5天的涨跌幅数据
stock_change = np.random.normal(0, 1, (4, 5))
stock_change

返回结果:

1.4.2 均匀分布

  • np.random.rand(d0d1...dn)

    • 返回[0.0,1.0)内的一组均匀分布的数。
  • np.random.uniform(low=0.0high=1.0size=None)
    • 功能:从一个均匀分布[low,high)中随机采样,注意定义域是左闭右开,即包含low,不包含high.
    • 参数介绍:
      • low: 采样下界,float类型,默认值为0;
      • high: 采样上界,float类型,默认值为1;
      • size: 输出样本数目,为int或元组(tuple)类型,例如,size=(m,n,k), 则输出mnk个样本,缺省时输出1个值。
    • 返回值:ndarray类型,其形状和参数size中描述一致。
  • np.random.randint(lowhigh=Nonesize=Nonedtype='l')
    • 从一个均匀分布中随机采样,生成一个整数或N维整数数组,
    • 取数范围:若high不为None时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数。

示例代码:

# 生成均匀分布的随机数
x2 = np.random.uniform(-1, 1, 100000000)

返回结果:

画图看分布状况:

import matplotlib.pyplot as plt
import numpy as np# 生成均匀分布的随机数
x2 = np.random.uniform(-1, 1, 100000000)# 画图看分布状况
# 1)创建画布
plt.figure(figsize=(10, 10), dpi=100)# 2)绘制直方图
plt.hist(x=x2, bins=1000)  # x代表要使用的数据,bins表示要划分区间数# 3)显示图像
plt.show()

2 数组的索引、切片

一维、二维、三维的数组如何索引?

  • 直接进行索引,切片
  • 对象[:, :] -- 先行后列

二维数组索引方式:

  • 举例:获取第一个股票的前3个交易日的涨跌幅数据
# 二维的数组,两个维度
stock_change[0, 0:3]   #  第1 行前3列

返回结果:

  • 三维数组索引方式:

3 形状修改

3.1 ndarray.reshape(shape, order)

  • 返回一个具有相同数据域,但shape不一样的视图
  • 行、列不进行互换
  • # 在转换形状的时候,一定要注意数组的元素匹配
    stock_change.reshape([5, 4])
    stock_change.reshape([-1,10])  # 数组的形状被修改为: (2, 10), -1: 表示通过待计算
    

3.2 ndarray.resize(new_shape)

  • 修改数组本身的形状(需要保持元素个数前后相同)
  • 行、列不进行互换
stock_change.resize([5, 4])# 查看修改后结果
stock_change.shape
(5, 4)

3.3 ndarray.T

  • 数组的转置
  • 将数组的行、列进行互换
stock_change.T.shape
(4, 5)

4 类型修改

4.1 ndarray.astype(type)

  • 返回修改了类型之后的数组
stock_change.astype(np.int32)

4.2 ndarray.tostring([order])或者ndarray.tobytes([order])

  • 构造包含数组中原始数据字节的Python字节
arr = np.array([[[1, 2, 3], [4, 5, 6]], [[12, 3, 34], [5, 6, 7]]])
arr.tostring()

4.3 jupyter输出太大可能导致崩溃问题【了解】

如果遇到

IOPub data rate exceeded.The notebook server will temporarily stop sending outputto the client in order to avoid crashing it.To change this limit, set the config variable`--NotebookApp.iopub_data_rate_limit`.

这个问题是在jupyer当中对输出的字节数有限制,需要去修改配置文件

创建配置文件

jupyter notebook --generate-config
vi ~/.jupyter/jupyter_notebook_config.py

取消注释,多增加

## (bytes/sec) Maximum rate at which messages can be sent on iopub before they
#  are limited.
c.NotebookApp.iopub_data_rate_limit = 10000000

但是不建议这样去修改,jupyter输出太大会崩溃

5 数组的去重

5.1 np.unique()

import numpy as np
temp = np.array([[1, 2, 3, 4],[3, 4, 5, 6]])
np.unique(temp)

6 小结

  • 创建数组

    • 生成0和1的数组

      • np.ones()
      • np.ones_like()
    • 从现有数组中生成
      • np.array -- 深拷贝
      • np.asarray -- 浅拷贝
    • 生成固定范围数组

      • np.linspace()

        • nun -- 生成等间隔的多少个
      • np.arange()
        • step -- 每间隔多少生成数据
      • np.logspace()
        • 生成以10的N次幂的数据
    • 生层随机数组

      • 正态分布

        • 里面需要关注的参数:均值:u, 标准差:σ

          • u -- 决定了这个图形的左右位置
          • σ -- 决定了这个图形是瘦高还是矮胖
        • np.random.randn()
        • np.random.normal(0, 1, 100)
      • 均匀
        • np.random.rand()
        • np.random.uniform(0, 1, 100)
        • np.random.randint(0, 10, 10)
  • 数组索引

    • 直接进行索引,切片
    • 对象[:, :] -- 先行后列
  • 数组形状改变

    • 对象.reshape()

      • 没有进行行列互换,新产生一个ndarray
    • 对象.resize()
      • 没有进行行列互换,修改原来的ndarray
    • 对象.T
      • 进行了行列互换
  • 数组去重

    • np.unique(对象)

Numpy的基本操作相关推荐

  1. Python中Numpy(2,numpy的基本操作(级联,维度转换,切分,副本))

    1. ndarray的基本操作 # 1.索引与切片 和列表的是一个道理 n2 = np.arange(0,10,1) print(n2) print(n2[::-1]) #反转 print(n2[:: ...

  2. python输入数组可以判断个数和类型_一起学opencv-python二(numpy数组基本操作学习)...

    参考了https://www.yiibai.com/numpy/numpy_ndarray_object.html.其实opencv对像素进行运算用的就是numpy,它的MATLAB真的很像.学会了n ...

  3. numpy.array()基本操作

    https://blog.csdn.net/fu6543210/article/details/83240024

  4. NumPy基本操作快速熟悉

    NumPy 是 Python 数值计算非常重要的一个包.很多科学计算包都是以 NumPy 的数组对象为基础开发的. 本文用代码快速过了一遍 NumPy 的基本操作,对 NumPy 整体有一个把握.希望 ...

  5. Numpy关于数组的基本使用

    Numpy关于数组的基本使用 D系鼎溜已关注 2020.03.27 17:34:14字数 1,713阅读 165 附上参考链接 https://www.runoob.com/numpy/numpy-t ...

  6. AI基础:Numpy简易入门

    本文提供最简易的 Numpy 的入门教程,适合初学者.(黄海广) 1.Numpy 简易入门 NumPy(Numeric Python)提供了许多高级的数值编程工具,如:矩阵数据类型.矢量处理,以及精密 ...

  7. Numpy练习题100题-提高你的数据分析技能

    本文总结了Numpy的常用操作,并做成练习题,练习题附答案建议读者把练习题完成.作者认为,做完练习题,Numpy的基本操作没有问题了,以后碰到问题也可以查这些习题.(文末提供下载) NumPy(Num ...

  8. php科学计算库,科学计算库numpy基础

    numpy numpy的核心数据结构是ndarray,可以创建N维数组 ndarray的特点 ndarray(N-dimensional array):N维数组 一种由相同类型的元素组成的多维数组,元 ...

  9. python的numpy库结构_NumPy构成了数据科学领域中许多Python库的基础。

    关于数据科学的一切都始于数据,数据以各种形式出现.数字.图像.文本.x射线.声音和视频记录只是数据源的一些例子.无论数据采用何种格式,都需要将其转换为一组待分析的数字.因此,有效地存储和修改数字数组在 ...

最新文章

  1. 开机自启动脚本_Linux配置开机自启动执行脚本的两种方法
  2. dubbo:9个你不一定知道,但好用的功能
  3. 分形之龙形曲线(Dragon Curve)
  4. Find All Numbers Disappeared in an Array
  5. Tensorflow的高级封装
  6. linux网络编程——webserver服务器编写
  7. 中心管理cms服务器_如何查找网站使用的CMS,脚本,服务器,技术
  8. 已知自然常数e的泰勒展开式是_泰勒公式:微分学的顶峰 (数学分析 · 导数的应用 (2))...
  9. Jsp与Servlet面试题
  10. mega linux教程,LINUX 安装MegaRAID Storage Manager (MSM)安装使用教程.doc
  11. 员工接私单可不可以追究刑事责任
  12. 学习Linux你必须知道的那些事儿
  13. 简单的基于规则的汉语拼音分词
  14. 办公一般用什么邮箱?办公邮箱价格哪个好?办公邮箱怎么登陆?
  15. 【FLUENT案例】01:T型管混合器中的流动与传热
  16. 处理mysql启动报错Table 'mysql.plugin' doesn't exis
  17. Python列表,元组,字典,集合 练习
  18. JAVA版APP社交移动电商系统+短视频+直播+线下店+营销活动+社交支持二开
  19. 物流一站式单号查询之快递鸟API接口(附Demo源码)
  20. 各linux桌面性能比较,七大顶级桌面比较!Linux平台自由选择

热门文章

  1. AI不止能美颜,美妆迁移这样做 | 赠书
  2. 谷歌NIPS论文Transformer模型解读:只要Attention就够了
  3. KDD 2019高维稀疏数据上的深度学习Workshop论文汇总
  4. 打破欧美垄断,国防科大斩获“航天界奥林匹克”大赛首冠
  5. 太火!这本AI图书微软强推,程序员靠它拿下50K!
  6. 腾讯58篇论文入选CVPR 2019,两年增长超200%
  7. 今晚8点免费直播 | 详解知识图谱关键技术与应用案例
  8. 谷歌CEO:没有这项能力,再牛的程序员也不要!
  9. 资源 | 2018年值得关注的200场机器学习会议(建议收藏)
  10. 听完李厂长和雷布斯在乌镇讲AI段子,我突然理解为什么这两个男人选择在一起了