1、什么是Numpy

简单来说:

  • Numpy(Numerical Python)是一个开源的Python科学计算库,用于快速处理任意维度的数组。
  • Numpy支持常见的数组和矩阵操作。对于同样的数值计算任务,使用Numpy比直接使用Python要简洁的多。
  • Numpy使用ndarray对象来处理多维数组,该对象是一个快速而灵活的大数据容器。

NumPy提供了一个N维数组类型ndarray,它描述了相同类型的“items”的集合。这里的相同类型的item是指每一列的数据类型要一致,不同列不一定。有点像关系表那种。

比如说:

2、N维数组-ndarray

数组属性反映了数组本身固有的信息,任何一个数组实例都可以调用一下方法:

属性名字 属性解释
ndarray.shape 数据几行几列
ndarray.size 数组中的元素数量
ndarray.dtype 数组元素的类型

ps:关于数组的shape

  • 一维数组

    • 比如说,a1 = np.array([1,2,3,4])
  • 二维数组

    • a2 = np.array([[1,2,3,4],

      [5,6,7,8]])
    • 注意a有两层 [[...],[...],[...]]

  • 三维数组

    • a3 = np.array([[[1,2,3],[4,5,6]],[5,6,7,8]])

    • 注意a3有三层 [[[],...],[...],[...]]

3、Numpy基本操作

3.1 生成数组的方法

(1)生成全是0,或全是1

  • np.ones(shape, dtype)

    • 生成全是1的数组,shape为表示行列的元组(注意是元组,否则报错~)

  • np.ones_like(a, dtype)

    • 生成全是1的数组,shape像数组a
  • np.zeros(shape, dtype)

  • np.zeros_like(a, dtype)

(2)从现有的数组中生成

  • np.array(object, dtype)

  • np.asarray(a, dtype

    a = np.array([[1,2,3],[4,5,6]])
    a1 = np.array(a)
    # 从现有的数组当中创建,a1和a是独立的两个数组
    a2 = np.asarray(a)
    # 相当于索引的形式,并没有真正的创建一个新的数组,对a2进行修改,会直接影响到a。

(3)生成固定范围的数组

  • np.linspace (start, stop, num, endpoint)

  • np.arange(start,stop, step, dtype)

  • np.logspace(start,stop, num)

3.2 Numpy的随机数组

关于 numpy.random模块

3.2.1正态分布的随机数组

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

    • d0,d1,...,dn 代表维度
    • 比如说 c = np.random.randn(1,2,3),代表生成一个三维数组,最外岑一个list,次外层两个list,最内层每个list有三个元素

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

    loc:float
    
    ​ 此概率分布的均值(对应着整个分布的中心centre)
    
    scale:float
    
    ​ 此概率分布的标准差(对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高)
    
    size:int or tuple of ints
    
    ​ 输出的shape,不写则输出一个值,写(3,4)则输出三行四列的数组

  • np.random.standard_normal(size=None)

3.2.2均匀分布的随机数组

  • np.random.rand(d0, d1, ..., dn)

    返回[0.0,1.0)内的一组均匀分布的数。
  • np.random.uniform(low=0.0, high=1.0, size=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(low, high=None, size=None, dtype='l')

    从一个均匀分布中随机采样,生成一个整数或N维整数数组,
    取数范围:若high不为None时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数。

3.3 数组索引和切片

  • 一维数组

    • 直接定位
  • 二维数组
    • 先行后列,比如a[0:2,0:2],表示数组a的0,1行和0,1列的数据(开区间)

  • 三维数组

    -从外往内,层层切片

3.4 数组形状修改

  • ndarray.reshape(shape, order)

    • 不改变原来的数组,会重新生成一个shape不同的数组,但是数据与原来数组一样。
  • ndarray.resize(new_shape)

    • 在原来数组上改变形状,不会生成新数组!
  • ndarray.T

    • 数据转置~

3.5 数组类型修改

  • ndarray.astype(type)

    a.astype(np.int32)

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

    arr = np.array([[[1, 2, 3], [4, 5, 6]], [[12, 3, 34], [5, 6, 7]]])
    arr.tostring()

4 参考文献

《Pyhton 科学计算》---张若愚

Numpy的一些操作的更多相关文章

  1. numpy数组的操作

    numpy - 介绍.基本数据类型.多维数组ndarray及其内建函数 http://blog.csdn.net/pipisorry/article/details/22107553 http://w ...

  2. Numpy | 12 数组操作

    Numpy 中包含了一些函数用于处理数组,大概可分为以下几类: 修改数组形状 翻转数组 修改数组维度 连接数组 分割数组 数组元素的添加与删除 一.修改数组形状 函数 描述 reshape 不改变数据 ...

  3. Numpy 数组简单操作

    创建一个2*2的数组,计算对角线上元素的和 import numpy as np a = np.arange(4).reshape(2,2) print (a) #[[0 1] # [2 3]] n1 ...

  4. python/numpy/pandas数据操作知识与技巧

    pandas针对dataframe各种操作技巧集合: filtering: 一般地,使用df.column > xx将会产生一个只有boolean值的series,以该series作为dataf ...

  5. Numpy 的常用操作

    1.创建数组array # 创建数组array import numpy as np a = np.array([1,2,3]) #创建数组 b = np.array([(1.5,2,3), (4,5 ...

  6. NumPy IO文件操作

    NumPy - IO ndarray对象可以保存到磁盘文件并从磁盘文件加载. 可用的 IO 功能有: load()和save()函数处理 numPy 二进制文件(带npy扩展名) loadtxt()和 ...

  7. Python 学习笔记之 Numpy 库——文件操作

    1. 读写 txt 文件 a = list(range(0, 100)) a = np.array(a) # a.dtype = np.int64 np.savetxt("filename. ...

  8. Numpy数据的操作 * dot() multiply() 的区别

    使用numpy时,跟matlab不同: 1.* dot() multiply() 对于array来说,* 和 dot()运算不同 *是每个元素对应相乘 dot()是矩阵乘法 对于matrix来说,*  ...

  9. numpy常用矩阵操作

    1.删除列 column_to_delete = [0, 1, 2] arr = np.delete(arr, [0, 1, 2], axis=1) 2.归一化 arr = normalize(arr ...

随机推荐

  1. ES6-11学习笔记--数值的扩展

    二进制 0B      八进制 0O Number.isFinite() , Number.isNaN() Number.parseInt() , Number.parseFloat() Number ...

  2. python-逆序输出

    输入一行字符串,然后对其进行如下处理. 输入格式: 字符串中的元素以空格或者多个空格分隔. 输出格式: 逆序输出字符串中的所有元素.然后输出原列表.然后逆序输出原列表每个元素,中间以1个空格分隔.注意 ...

  3. 以&#开头的是什么编码?

    今天遇到了一个网页时繁体的,它的title和meta信息在浏览器中显示正常,但是查看其源码是却是"最新發"这种. 在网上找了半天资料,终于搞明白了. 以在网页中&#开头的是 ...

  4. Node自动重启工具 nodemon

    为什么要使用 在编写调试Node.js项目,修改代码后,需要频繁的手动close掉,然后再重新启动,非常繁琐.现在,我们可以使用nodemon这个工具,它的作用是监听代码文件的变动,当代码改变之后,自 ...

  5. JavaScript操作select下拉框选项移动

    运行结果: 源代码: 1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta char ...

  6. EMS查看及修改邮箱发送和接受邮件大小的方法

    默认情况下,新建用户邮箱没有进行单独设置,故用户邮箱默认值为"Unlimited"(未限制),即遵从全局设置(继承邮箱数据库策略).通过EMS查看用户邮箱发送和接受邮件大小的默认值 ...

  7. Svelte3聊天室|svelte+svelteKit仿微信聊天实例|svelte.js开发App

    基于svelte3.x+svelteKit构建仿微信App聊天应用svelte-chatroom. svelte-chatroom 基于svelte.js+svelteKit+mescroll.js+ ...

  8. @RequestBody和@RequestParam注解以及返回值,ajax相关知识点

    关于前后端传递json数据这块查了好多资料,好多地方还是不清楚,先记录一下清楚的地方. 如果我们前端使用ajax发json数据,一般都加上contentType:'application/json;c ...

  9. Codeforces Round #753 (Div. 3), problem: (D) Blue-Red Permutation

    还是看大佬的题解吧 CFRound#753(Div.3)A-E(后面的今天明天之内补) - 知乎 (zhihu.com) 传送门  Problem - D - Codeforces 题意 n个数字,n ...

  10. go源码阅读 - container/ring

    相比于List,环的结构有些特殊,环的头部就是尾部,所以每个元素可以代表自身这个环.环其实是一个双向回环链表.type Ring struct { next, prev *Ring Value int ...