1 添加维度

原始数组如下:

import numpy as npa = np.array([1,2,3,4,5,6])a.shape
#(6,)

1.1 np.newaxis

1.2 None

1.3 reshape

1.4 np.expand_dims

expand_dims必须添加axis 参数,

axis=x表示新增加的维度是第x个维度

2 减少维度

减少维度除了用reshape之外,还可以使用别的方法

2.1 squeeze

减少那些维度 shape 上为 1 的维度

只能减少那些维度 shape 上为 1 的维度。因为减掉这个维度,数据结构上是没有变化的。

3 拼接矩阵

所用到的数组:

a=np.array([[1,2,3],[7,8,9]])
b=np.array([[4,5,6],[1,2,3]])a,b
'''
(array([[1, 2, 3],[7, 8, 9]]),array([[4, 5, 6],[1, 2, 3]]))
'''d=np.array([7,8,9])
e=np.array([1,2,3])
d,e
'''
(array([7, 8, 9]), array([1, 2, 3]))
'''

3.1 按行连接

3.1.1 c_

np.c_[a,b]
'''
array([[1, 2, 3, 4, 5, 6],[7, 8, 9, 1, 2, 3]])
'''np.c_[d,e]
'''
array([[7, 1],[8, 2],[9, 3]])
'''

3.1.2  hstack

多行的时候,和c_是一样的

对于单行的问题,hstack 里面是把行向量当作一行看的,c_是当作一列

np.hstack((a,b))
'''
array([[1, 2, 3, 4, 5, 6],[7, 8, 9, 1, 2, 3]])'''np.hstack((d,e))
'''
array([7, 8, 9, 1, 2, 3])
'''

3.1.3 column_stack

和c_是一样的

np.column_stack((a,b))
'''
array([[1, 2, 3, 4, 5, 6],[7, 8, 9, 1, 2, 3]])
'''np.column_stack((d,e))
'''
array([[7, 1],[8, 2],[9, 3]])
'''

3.1.4 concatenate

np.concatenate((a,b),axis=1)
'''
array([[1, 2, 3, 4, 5, 6],[7, 8, 9, 1, 2, 3]])
'''np.concatenate((d,e))
#array([7, 8, 9, 1, 2, 3])

3.2 按列排序

3.2.1 r_

np.r_[a,b]
'''
array([[1, 2, 3],[7, 8, 9],[4, 5, 6],[1, 2, 3]])
'''np.r_[d,e]
'''
array([7, 8, 9, 1, 2, 3])
'''

3.2.2 vstack

np.vstack((a,b))
'''
array([[1, 2, 3],[7, 8, 9],[4, 5, 6],[1, 2, 3]])
'''np.vstack((d,e))
'''
array([[7, 8, 9],[1, 2, 3]])
'''

3.3.3 row_stack

np.row_stack((a,b))
'''
array([[1, 2, 3],[7, 8, 9],[4, 5, 6],[1, 2, 3]])
'''np.row_stack((d,e))'''
array([[7, 8, 9],[1, 2, 3]])
'''

3.3.4 concatenate

np.concatenate((a,b),axis=0)
'''
array([[1, 2, 3],[7, 8, 9],[4, 5, 6],[1, 2, 3]])
'''

4 拆解

a = np.array(
[[ 1, 11, 2, 22],[ 3, 33, 4, 44],[ 5, 55, 6, 66],[ 7, 77, 8, 88]]
)

4.1 水平拆解 vsplit

np.vsplit(a, indices_or_sections=2)
'''
[array([[ 1, 11,  2, 22],[ 3, 33,  4, 44]]),array([[ 5, 55,  6, 66],[ 7, 77,  8, 88]])]
'''#拆分成[0:2) [2:
np.vsplit(a, indices_or_sections=[2,3])'''
[array([[ 1, 11,  2, 22],[ 3, 33,  4, 44]]),array([[ 5, 55,  6, 66]]),array([[ 7, 77,  8, 88]])]
'''
# 拆分成[0:2),[2:3),[3:)

4.2 垂直拆解 hsplit

a = np.array(
[[ 1, 11, 2, 22],[ 3, 33, 4, 44],[ 5, 55, 6, 66],[ 7, 77, 8, 88]]
)
np.hsplit(a, indices_or_sections=2)
'''
[array([[ 1, 11],[ 3, 33],[ 5, 55],[ 7, 77]]),array([[ 2, 22],[ 4, 44],[ 6, 66],[ 8, 88]])]
'''
#[0:2),[2,)
np.hsplit(a, indices_or_sections=[2,3])
'''
[array([[ 1, 11],[ 3, 33],[ 5, 55],[ 7, 77]]),array([[2],[4],[6],[8]]),array([[22],[44],[66],[88]])]
'''
#分成[0:2),[2:3),[3:)

4.3 综合切法 split

a = np.array(
[[ 1, 11, 2, 22],[ 3, 33, 4, 44],[ 5, 55, 6, 66],[ 7, 77, 8, 88]]
)
np.split(a, indices_or_sections=2,axis=0)
'''
[array([[ 1, 11,  2, 22],[ 3, 33,  4, 44]]),array([[ 5, 55,  6, 66],[ 7, 77,  8, 88]])]
'''#切完之后是 [[0:2)][.....] [[2:)][.....]
np.split(a, indices_or_sections=2,axis=1)
'''
[array([[ 1, 11],[ 3, 33],[ 5, 55],[ 7, 77]]),array([[ 2, 22],[ 4, 44],[ 6, 66],[ 8, 88]])]
'''#切完之后是 [.....][[0:2)] [.....][[2:)]

numpy 笔记:改变形态相关推荐

  1. numpy 笔记: random模块

    1 基本应用 randint 随机生成大小为size的正整数ndarray low.high.size三个参数.默认high是None,如果只有low,那范围就是[0,low).如果有high,范围就 ...

  2. matlab bwmorph spur,matlab图像处理学习笔记-数学形态与二值图像操作

    matlab图像处理学习笔记-数学形态与二值图像操作 数学形态学主要处理的是二值图像,因为二值图像的处理操作比较简单. 9.1 数学形态学图像处理 基本思想:利用一个称作结构元素(structurin ...

  3. 登高自卑 | 我的NumPy笔记

    注:以下内容来自NumPy中文网 1 NumPy的矢量化和广播两个特征是大部分功能的基础. 矢量化让代码更接近标准的数学符号,更Pythonic,隐藏了所有的显示循环(幕后是C在做显示循环). 广播即 ...

  4. numpy 笔记 view,copy和numpy的运行速度

    1 ndarray VS python-list Numpy 就是 C 的逻辑, 创建存储容器 Array 的时候是寻找内存上的一段连续空间来存放 Python 存放的时候则是不连续的区域(只是它用索 ...

  5. numpy笔记整理 multivariate_normal(多元正态分布采样)

    1 基本用法 np.random.multivariate_normal(mean, cov, size=None, check_valid=None, tol=None) 根据均值和协方差矩阵的情况 ...

  6. 【Numpy】改变数组形状

    文章目录 前言 1. reshape 2. ravel 3. ndarray.flatten Reference 前言 本篇总结.介绍数组的基本操作之一--改变数组形状 [1]. 1. reshape ...

  7. NumPy 笔记(超级全!收藏√)

    文章目录 NumPy 教程 NumPy Ndarray 对象 NumPy 数据类型 数据类型对象 (dtype) NumPy 读取数据 NumPy 数组属性 ndarray.ndim ndarray. ...

  8. 【Numpy】改变数组维数

    文章目录 前言 1. atleast_1d.atleast_2d.atleast_3d 2. broadcast 3. broadcast_to 4. broadcast_arrays 5. expa ...

  9. Matplotlib NumPy笔记

    声明,内容严重借鉴https://blog.csdn.net/weixin_43598956/article/details/106585342 撰写此文目的有二:记录知识点以及练习markdown撰 ...

最新文章

  1. Windows Store获得Fluent Design加成
  2. 根据文件属性或权限进行find查找
  3. Cissp-【第6章 安全评估与测试】-2021-3-15(661页-706页)
  4. 2000万日订单背后:美团外卖客户端高可用建设体系
  5. 横屏展示 fragment 监听面积并非全屏,部分面积监听失效
  6. freopen()函数在ACM中的使用
  7. Angular Web App部署Ubuntu Nginx
  8. 名创优品向港交所提交上市申请书
  9. php数据库find(),db_find()
  10. Vue指令(二)--数组的变动
  11. 如何去除小程序button的边框
  12. log2 3用计算机怎么按,如何使用计算器计算对数log以2为底3的对数,由于计算器2ndf又叫shift,不同计算器不同,请根据图来,因为有一些别...
  13. 【快捷键】Mac KeyMap
  14. Doclist压缩方法简介
  15. sqlite 导出CSV,身份证号码显示科学计数法
  16. JAVA常用工具类-【6】邮箱发送
  17. cocos creator 模拟重力爆炸效果
  18. vscode怎么运行android项目,windows + flutter +android+ vscode 安装配置运行流程(详细版本)...
  19. OSTEP-MLFQ(多级反馈队列)-HOMEWORK(simulation)
  20. 乐鑫 ESP32-H2 SoC 与 Thread SDK 通过 Thread 1.3.0 认证

热门文章

  1. 移动端H5页面高清多屏适配方案
  2. OpenStack监控测量服务Ceilometer安装及 API说明
  3. IPv4的核心管理功能/proc/sys/net/ipv4/*
  4. HDR 拍照模式的原理,实现及应用
  5. 【编程题目】求二叉树中节点的最大距离
  6. CodeFirst体验之且行且珍惜
  7. Oracle数据表和Constraint管理
  8. 微软CEO鲍尔默力推HTML5:称其为平台的粘合剂
  9. AsyncTask类的使用
  10. Leetcode1688. 比赛中的配对次数[C++题解]:简单题模拟