生成数组的函数

arange

arange 类似于Python中的 range 函数,只不过返回的不是列表,而是数组:

arange(start, stop=None, step=1, dtype=None)

产生一个在区间 [start, stop) 之间,以 step 为间隔的数组,如果只输入一个参数,则默认从 0 开始,并以这个值为结束:

range 不同, arange 允许非整数值输入,产生一个非整型的数组:

数组的类型默认由参数 start, stop, step 来确定,也可以指定:

由于存在精度问题,使用浮点数可能出现问题:

stop 的值 2.1 出现在了数组中,所以使用浮点数的时候需要注意。

linspace

linspace(start, stop, N)

产生 N 个等距分布在 [start, stop]间的元素组成的数组,包括 start, stop

logspace

logspace(start, stop, N)

产生 N 个对数等距分布的数组,默认以10为底:

产生的值为

meshgrid

有时候需要在二维平面中生成一个网格,这时候可以使用 meshgrid 来完成这样的工作:

x 对应网格的第一维,y 对应网格的第二维。

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cmdef f(x, y):# sinc 函数r = np.sqrt(x ** 2 + y ** 2)result = np.sin(r) / rresult[r == 0] = 1.0return resultx_ticks = np.linspace(-10, 10, 51)
y_ticks = np.linspace(-10, 10, 51)x, y = np.meshgrid(x_ticks, y_ticks)z = f(x, y)fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(x, y, z,rstride=1, cstride=1,cmap=cm.YlGnBu_r)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')

meshgrid 可以设置轴排列的先后顺序:

  • 默认为 indexing='xy' 即笛卡尔坐标,对于2维数组,返回行向量 x 和列向量 y
  • 或者使用 indexing='ij' 即矩阵坐标,对于2维数组,返回列向量 x 和行向量 y

ogrid , mgrid

Matlab中有 meshgrid 的用法:

meshgrid(-1:.5:1, -1:.5:1)

Numpymeshgrid 并不支持这样的用法,但我们可以使用 ogrid / mgrid 来实现类似这样的用法。

ogridmgrid 的区别在于:

  • ogrid 相当于 meshgrid(indexing='ij', sparse=True)
  • mgrid 相当于 meshgrid(indexing='ij', sparse=False)

注意:

  • 这里使用的是中括号
  • Matlab 使用的是 start:step:end 的表示,Numpy 使用的是 start:end:step 的表示
  • 这里的结果不包括 end 的值

为了包含 end 的值,我们可以使用这样的技巧:

我们在 step 的位置传入一个复数 5j ,表示我们需要一个 5 个值的数组,此时返回值就会包含 end 的值。

重复之前的画图:

y, x = np.ogrid[-10:10:51j, -10:10:51j]z = f(x, y)fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(x, y, z,rstride=1, cstride=1,cmap=cm.YlGnBu_r)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')

这里,我们交换了 x, y 输出值的顺序。

r_ , c_

我们可以使用 r_ / c_ 来产生行向量或者列向量。

使用切片产生:

复数步长制定数组长度:

连接多个序列,产生数组:

列向量:

ones , zeros

ones(shape, dtype=float64)
zeros(shape, dtype=float64)

产生一个制定形状的全 0 或全 1 的数组,还可以制定数组类型:

empty

empty(shape, dtype=float64, order='C')

也可以使用 empty 方法产生一个制定大小的数组(数组所指向的内存未被初始化,所以值随机),再用 fill 方法填充:

empty_like, ones_like, zeros_like

empty_like(a)
ones_like(a)
zeros_like(a)

产生一个跟 a 大小一样,类型一样的对应数组。

identity

indentity(n, dtype=float64)

产生一个 nn 的单位矩阵:

numpy生成数组的函数相关推荐

  1. Numpy中数组创建函数的辨析

    首先推荐Numpy官方的教程,网址. 很多人会对数组创建函数的参数中什么时候要用括号np.zeros((2, 3)),什么时候不用括号np.eye(3, 5)感到疑惑,这里对它们统一进行梳理.(按照官 ...

  2. python数组去重函数_Python科学计算库Numpy之 数组操作

    操作ndarray 的方法 numpy.reshape:这个函数在不改变数据的条件下修改形状 numpy.ndarray.flat:该函数返回数组上的一维迭代器,行为类似 Python 内建的迭代器 ...

  3. np.randon模块,numpy.random模块各函数功能详解,分类描述各个函数功能,生成随机数

    因为网上很多文章都是在依次列举各个函数的功能,并没有做分类,所以记忆上还有使用上都不方便. 本文旨在将功能相似的函数放在一起,以及对它们进行辨析和区分,便于精准地调用.未完待续 最权威的参考来源:Ra ...

  4. python数据分析 - numpy | ndarray数组 | numpy常用函数

    文章目录 数据分析 numpy概述 numpy历史 numpy的核心:多维数组 numpy基础 ndarray数组 内存中的ndarray对象 ndarray数组对象的特点 ndarray数组对象的创 ...

  5. numpy使用np.argmax函数获取一维数组中最大值所在的索引(index of largest value in numpy array with np.argmax)

    numpy使用np.argmax函数获取一维数组中最大值所在的索引(index of largest value in numpy array with np.argmax) 目录 numpy使用np ...

  6. python使用numpy中的flatten函数将2D numpy数组拉平为1Dnumpy数组、使用np.linalg.matrix_rank函数计算2D numpy数组的秩(rank)

    python使用numpy中的flatten函数将2D numpy数组拉平为1Dnumpy数组.使用np.linalg.matrix_rank函数计算2D numpy数组的秩(rank) 目录

  7. python使用numpy的np.float_power函数计算numpy数组中每个数值的指定幂次(例如平方、立方)、np.power函数默认返回整数格式、np.float_power函数返回浮点数

    python使用numpy的np.float_power函数计算numpy数组中每个数值的指定幂次(例如平方.立方).np.power函数默认返回整数格式.np.float_power函数默认返回浮点 ...

  8. python使用numpy的np.power函数计算numpy数组中每个数值的指定幂次(例如平方、立方)、np.power函数默认返回整数格式、np.float_power函数默认返回浮点数

    python使用numpy的np.power函数计算numpy数组中每个数值的指定幂次(例如平方.立方).np.power函数默认返回整数格式.np.float_power函数默认返回浮点数 目录

  9. numpy使用np.set_printoptions函数抑制numpy数组输出结果使用科学计数法进行显示(suppressing scientific notation in numpy array)

    numpy使用np.set_printoptions函数抑制numpy数组输出结果使用科学计数法进行显示(suppressing scientific notation in numpy array) ...

最新文章

  1. 智能边缘计算:计算模式的再次轮回
  2. 1600802002
  3. MS SQL “ 无法启动分布式事务“问题的解决思路
  4. 创建linux启动盘,linux系统中如何创建windows启动盘的详细介绍
  5. LaTex文章中插入Visio及Matlab矢量图
  6. SpringBoot笔记:SpringBoot2.3集成Logback日志组件配置
  7. java的runtime类,java中Runtime类的简单应用
  8. c++2015语言,2015年7月TIOBE编程语言排行榜:C++ 的复兴
  9. flash特效原理:图片滑动放大效果(2)
  10. PostgreSQL复制特性历史漫谈-士别三日,当刮目相看
  11. linux杂谈(十七):iscsi存储分离技术
  12. python的自省基础
  13. 关于 C# 请求 https 那点事
  14. 芝加哥大学计算机专业硕士,芝加哥大学计算机硕士录取条件有哪些?_托普仕留学...
  15. bzoj1565: [NOI2009]植物大战僵尸
  16. 文件及代码代码命名规则
  17. 计算机组成原理输入输出系统——DMA方式
  18. 艾永亮:只要改变这两点,传统健身房行业可以逃离浩沙死咒
  19. 传感器技术-光电式传感器(学习笔记十)
  20. 数据库面试——锁的12连问,赶紧收藏!

热门文章

  1. 浅谈PHP实现伪静态_莫枫恋_新浪博客
  2. linux如何取消分区加密,linux下分区与加密详解
  3. 修改注册表后的严重问题
  4. Android 集成facebook授权登录以及过程中登录错误,密钥散列不匹配
  5. html 可折叠的表格,Layui数据表格展开折叠
  6. chm文件打开看不到内容的问题
  7. Delta并联机械臂实现电磁铁搬运功能
  8. segmented control的使用
  9. CA-Certificate Authority
  10. 海天酱油以创新为基础,拓展网络销售渠道