• 部分参考:菜鸟教程

文章目录

  • 一:生成数组
    • (1)由底层ndarray构造器创建:np.arrary()
    • (2)其他创建方法
    • (3)特殊数组创建方法
  • 二:数组属性
    • (1)N维数组-ndarray
    • (2)轴的概念(axis)
    • (3)ndarray属性
  • 三:索引和切片
    • (1)基本操作
    • (2)高级操作

一:生成数组

(1)由底层ndarray构造器创建:np.arrary()

上一节简单说明了array()函数的用法,其完整形式如下

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
  • object :数组或嵌套的数列
  • dtype :数组元素的数据类型,可选
  • copy :对象是否需要复制,可选
  • order :创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)
  • subok:默认返回一个与基类类型一致的数组
  • ndmin:指定生成数组的最小维度
a = np.array([[1, 2, 3], [3, 4, 5], [5, 6, 7], [7, 8, 9]], dtype=complex)
print(a)

(2)其他创建方法

①:可以使用fill()方法将数组设定为指定值

  • 注意:如果fill()中传入的数据类型和原有数组中数据的类型不一致时,会向原有的类型发生转换
a = np.zeros(10, dtype=int)
a.fill(5)  # 全部填充为5
print(a)

(3)特殊数组创建方法

①:生成全0或全1的数组

  • 默认是浮点数,如果需要其他类型,使用dtype指定即可
a = np.zeros(5)  # 5个元素
b = np.ones(5, dtype=int)  # 5个元素
print(a)
print(b)


②:使用arange()生成整数序列,它会根据 startstop 指定的范围以及 step 设定的步长,生成一个 ndarray,它的基本格式如下

numpy.arange(start, stop, step, dtype)
  • start:起始值,默认为0
  • stop:终止值(不包含)
  • step:步长,默认为1
  • dtype:数据类型

比如

a = np.arange(0, 10, 2, int)
print(a)


③:使用linspace()生成等差数列,它的基本格式如下

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
  • start:序列的起始值
  • stop:序列的终止值,如果endpointtrue,该值包含于数列中
  • num:要生成的等步长的样本数量,默认为50
  • endpoint:该值为 true 时,数列中包含stop值,反之不包含,默认是True
  • retstep:如果为 True 时,生成的数组中会显示间距,反之不显示
  • dtype:数据类型

比如

a = np.linspace(1, 10, 10)
b = np.linspace(10, 20, 5, endpoint=False, dtype=int)  # 不包含终止值
print(a)
print(b)

④:使用random.rand()等函数生成随机数

  • 读者可自行查阅相关文档,探索更多的随机数生成方法
a = np.random.rand(5)
b = np.random.randn(5)  # 满足正态分布
c = np.random.randint(1, 10, 10)  # 10个随机整数
print(a)
print(b)
print(c)

二:数组属性

(1)N维数组-ndarray

NumPy最核心的数据类型是N维数组The N-dimensional array (ndarray),可以看成homogenous(同质) items的集合,与只密切相关的两种类型是Data type objects (dtype)Scalars

  • 数据类型对象(np.dtype):用来描述与数组对应的内存区域如何使用。比如数据的类型、大小等
  • NumPy数据类型(scalar types):上一节已有介绍

如下是常见的1维、2维、3维数组


Numpy操作的对象就是数组,也即ndarray,这一点可以通过type()验证

a = np.random.randint(1, 10, 10)  # 10个随机整数
print(type(a))

(2)轴的概念(axis)

Numpy数组的维数称之为秩(rank),秩表示轴的数量;在Numpy中每一个线性的数组称为一个轴(axis)

类似于笛卡尔坐标系,简单的二维坐标系只有xxx轴和yyy轴,使用它们可以平面空间中唯一确定一个位置


而Numpy中的轴指的就是行、列的方向

  • axis=0:表示沿着第 0 轴进行操作,即对每一列进行操作
  • axis=1:表示沿着第1轴进行操作,即对每一行进行操作

(3)ndarray属性

属性 说明
ndarrary.ndim 秩(轴的数量或者维度)
ndarray.shape 数组的维度,对于矩阵,n 行 m 列
ndarray.size 数组元素的总个数,相当于 .shape 中 n*m 的值
ndarray.dtype ndarray 对象的元素类型
ndarray.itemsize ndarray 对象中每个元素的大小,以字节为单位
ndarray.flags ndarray 对象的内存信息
ndarray.real ndarray元素的实部
ndarray.imag ndarray元素的虚部
a = np.zeros((3, 4, 2), dtype=int)  # 三维数组
print(a.ndim)
print(a.shape)
print(a.size)
print(a.dtype)
print(a.itemsize)
print(a.flags)#  结果
3
(3, 4, 2)
24
int32
4C_CONTIGUOUS : TrueF_CONTIGUOUS : FalseOWNDATA : TrueWRITEABLE : TrueALIGNED : TrueWRITEBACKIFCOPY : FalseUPDATEIFCOPY : False

另外注意flags 所列信息含义

三:索引和切片

  • 和Python中的list一样,ndarray对象的内容可以通过索引或切片来访问和修改

(1)基本操作

①:最基本的索引访问

a = np.random.randint(0, 10, size=[3, 3])  # 二维随机整数
print(a)
print(a[0])
print(a[0][2])

修改也是没有问题的

a = np.random.randint(0, 10, size=[3, 3])  # 二维随机整数
print(a)
a[0] = [9, 9, 9]
print(a)


②:切片可以通过start:stop:step来操作

a = np.random.randint(0, 10, size=[3, 3])  # 二维随机整数
print(a)
print(a[0:2:1])

同样支持负索引

a = np.random.randint(0, 10, size=[3, 3])  # 二维随机整数
print(a)
print(a[-2::1])

(2)高级操作

  • 暂略

(数据分析三板斧)第一斧Numpy-第二节:生成数组、数组属性和切片相关推荐

  1. 程序员编程艺术第一章(第二节)

    第二节:两指针逐步翻转 思路: abc defghi,要 abc 移动至最后 abc defghi->def abcghi->def ghiabc 定义俩指针, p1 指向 ch[0], ...

  2. (数据分析三板斧)第一斧Numpy-第一节:Numpy基本了解

    文章目录 一:Numpy了解 二:Numpy之Ndarray对象 三:Numpy之数据类型 一:Numpy了解 Numpy是Python的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵,它提 ...

  3. ps分辨率像素英寸和厘米的区别_南南带你免费学习超级强大的做图软件-PS(第一章:第二节)...

    型男靓女们大家好,几天不见了,大家们都久等了!今天我们继续学习PS的主菜单的主要功能,大家一定要跟好了!记好笔记. 今天我们主要学菜单里最基本的工具,文件菜单,很重要的哦! 左上角:文件菜单的功能 在 ...

  4. (考研湖科大教书匠计算机网络)第一章概述-第二节:三种交换方式(电路交换、报文交换和分组交换)

    获取pdf:密码7281 专栏目录首页:[专栏必读]王道考研408计算机网络+湖科大教书匠计算机网络+网络编程万字笔记.题目题型总结.注意事项.目录导航和思维导图 王道考研408计算机组成原理万字笔记 ...

  5. (数据库系统概论|王珊)第一章绪论-第二节:数据模型

    文章目录 一:什么是数据模型 二:两类数据模型 (1)概念模型(信息模型) A:定义 B:相关术语 C:概念模型的一种表示方法:实体-联系方法 (2)逻辑模型和物理模型 三:数据模型的组成要素 四:层 ...

  6. (王道408考研数据结构)第一章绪论-第二节2:算法的时间复杂度和空间复杂度

    文章目录 一:算法的时间复杂度 (1)事后统计方法 (2)事前分析估算的方法 (3)函数的渐进式增长 (4)算法时间复杂度 A:算法时间复杂度定义-大 O O O记法 B:推导大 O

  7. (王道408考研数据结构)第一章绪论-第二节1:算法的基本概念、算法的特性及设计要求

    文章目录 一:算法的基本概念 (1)数据结构和算法的关系 (2)算法(Algorithm)的定义 二:算法的特性 三:算法设计要求 程序=数据结构+算法,前面我们已经探讨了什么是数据结构,明白了如何用 ...

  8. 高数_第一章_第二节_极限

    极限(重难点) 一.考试概要 极限的概念 1)数列的极限 ε 限 制 两 者 的 范 围 , N 用 来 表 示 数 列 以 后 的 项 部 分 列 极 限 必 须 相 等 才 能 成 为 数 列 极 ...

  9. 第三篇:属性_第二节:控件属性在页面及源码中的表示方式

    一.属性在页面及源码中的表示方式 认真地看看页面中声明控件的代码,你会发现控件属性在页面中的表示千变万化.我们看看下面这些: <%@ Page Language="C#" A ...

最新文章

  1. 【opencv】(8) 傅里叶变换,高通低通滤波器
  2. Caffe实战二(手写体识别例程:CPU、GPU、cuDNN速度对比)
  3. html5水调歌头代码,张惠言的五首《水调歌头》
  4. shell重启jar包
  5. 走近分形与混沌(part4)--牛顿与混沌
  6. 微信公众号接口添加菜单时错误(errcode:40017 invalid button type)
  7. rn项目 假如cocoapods_React Native 如何集成到原生IOS项目中?
  8. 新版手机浏览器_夸克浏览器发布全新3.0版,AI技术创新智能化信息服务
  9. JavaWEB过滤器和监听器技术
  10. 2011年最后一小时
  11. mosquitto查看订阅记录_Mosquitto\Client
  12. android handler的机制和原理_Android 插件化原理——Hook机制之AMSamp;PMS解析
  13. 基于深度学习的个性化新闻推荐.pdf(附下载链接)
  14. 屏蔽节点的鼠标点击选择文字的方法
  15. Metasplotable3 简易安装教程
  16. linux下用c语言写吃金豆,吃金豆pacmanTC版
  17. java毕业设计对外汉语教学辅助平台Mybatis+系统+数据库+调试部署
  18. K8s 开先河、技能全栈、业务“无感”,深度解读云原生的这一年
  19. js getday()获取值不对
  20. minecraft编程java_第一章 minecraft编程mod

热门文章

  1. 上线当天程序员锁死服务器,致公司破产解散
  2. 看,他们都转行做web前端工程师了
  3. 为什么普通红包自己不能领_我的拼多多不能领红包是怎么回事呢?
  4. 你不知道的BAT大数据面试题
  5. 监督学习 | 线性分类 之Logistic回归原理及Sklearn实现
  6. Titanic(泰坦尼克号生存预测)---(1)
  7. BIC无代码绘制差异基因火山图
  8. 重磅综述:三万字长文读懂单细胞RNA测序分析的最佳实践教程 (原理、代码和评述)
  9. python数据结构之链表_Python数据结构之翻转链表
  10. 洛谷 刷题 深基部分题解(python版)-2022.01.29