np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴


Posted in Python onNovember 30, 2019

如下所示:

>> type(np.newaxis)
NoneType
>> np.newaxis == None
True

np.newaxis 在使用和功能上等价于 None,查看源码发现:newaxis = None,其实就是 None 的一个别名。

1. np.newaxis 的实用

>> x = np.arange(3)
>> x
array([0, 1, 2])
>> x.shape
(3,)

>> x[:, np.newaxis]
array([[0],
    [1],
    [2]])

>> x[:, None]
array([[0],
    [1],
    [2]])

>> x[:, np.newaxis].shape
 (3, 1)

2. 索引多维数组的某一列时返回的是一个行向量

>>> X = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
>>> X[:, 1]
array([2, 6, 10])    % 这里是一个行
>>> X[:, 1].shape    % X[:, 1] 的用法完全等同于一个行,而不是一个列,
(3, )

如果我们索引多维数组的某一列时,返回的仍然是列的结构,一种正确的索引方式是:

>>>X[:, 1][:, np.newaxis]
array([[2],
   [6],
   [10]])

如果想实现第二列和第四列的拼接(层叠):

>>>X_sub = np.hstack([X[:, 1][:, np.newaxis], X[:, 3][:, np.newaxis]])      
          % hstack:horizontal stack,水平方向上的层叠
>>>X_sub
array([[2, 4]
   [6, 8]
   [10, 12]])

当然更为简单的方式还是使用切片:

>> X[:, [1, 3]]
array([[ 2, 4],
    [ 6, 8],
    [10, 12]])

3. 使用 np.expand_dims

>> X = np.random.randint(0, 9, (2, 3))
>> mean_X = np.mean(X, axis=0)
>> X - mean_X           # 这样做是没有问题的

>> mean_X = np.mean(X, axis=1)
>> X - mean_X
ValueError: operands could not be broadcast together with shapes (2,3) (2,)

此时便需要手动的调整 mean_X 的维度,使其能够 broadcast,有以下三种方式,在指定的轴上进行 broadcast:

mean_X[:, None]

mean_X[:, np.newaxis]

mean_X = np.expand_dims(mean_X, axis=1)

以上这篇np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现扫描指定目录下的子目录及文件的方法
Jul 16 Python
Python中请使用isinstance()判断变量类型
Aug 25 Python
python实现从一组颜色中找出与给定颜色最接近颜色的方法
Mar 19 Python
举例讲解Python中的迭代器、生成器与列表解析用法
Mar 20 Python
python 中的int()函数怎么用
Oct 17 Python
python模拟登陆,用session维持回话的实例
Dec 27 Python
Django框架models使用group by详解
Mar 11 Python
如何用python处理excel表格
Jun 09 Python
python利用递归方法实现求集合的幂集
Sep 07 Python
Python如何使用ConfigParser读取配置文件
Nov 12 Python
Pycharm如何自动生成头文件注释
Nov 14 Python
Python+uiautomator2实现自动刷抖音视频功能
Apr 29 Python
python 实现多维数组转向量
Nov 30 #Python
python 二维矩阵转三维矩阵示例
Nov 30 #Python
Python三元运算与lambda表达式实例解析
Nov 30 #Python
python将三维数组展开成二维数组的实现
Nov 30 #Python
Pandas实现dataframe和np.array的相互转换
Nov 30 #Python
Python实现图片批量加入水印代码实例
Nov 30 #Python
Python实现把多维数组展开成DataFrame
Nov 30 #Python
You might like
php 数组的合并、拆分、区别取值函数集
2010/02/15 PHP
通过PHP修改Linux或Unix口令的方法分享
2012/01/30 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
2016/03/01 PHP
laravel-admin 中列表筛选方法
2019/10/03 PHP
JS焦点图切换,上下翻转
2011/05/12 Javascript
8款非常棒的响应式jQuery 幻灯片插件推荐
2012/02/02 Javascript
JavaScript组件焦点与页内锚点间传值的方法
2015/02/02 Javascript
javascript与css3动画结合使用小结
2015/03/11 Javascript
详解jQuery Mobile自定义标签
2016/01/06 Javascript
JS实现的在线调色板实例(附demo源码下载)
2016/03/01 Javascript
jqueryMobile 动态添加元素,展示刷新视图的实现方法
2016/05/28 Javascript
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
Nodejs中Express 常用中间件 body-parser 实现解析
2017/05/22 NodeJs
bootstrap日期插件daterangepicker使用详解
2017/10/19 Javascript
vue通过点击事件读取音频文件的方法
2018/05/30 Javascript
Vue实现固定定位图标滑动隐藏效果
2019/05/30 Javascript
JavaScript RegExp 对象用法详解
2019/09/24 Javascript
JavaScript制作3D旋转相册
2020/08/02 Javascript
JS脚本实现定时到网站上签到/签退功能
2020/04/22 Javascript
Vue 同步异步存值取值实现案例
2020/08/05 Javascript
Python中的赋值、浅拷贝、深拷贝介绍
2015/03/09 Python
详解Python中的__new__()方法的使用
2015/04/09 Python
python3 模拟登录v2ex实例讲解
2017/07/13 Python
Python中常见的异常总结
2018/02/20 Python
Python 实现使用dict 创建二维数据、DataFrame
2018/04/13 Python
wxPython绘图模块wxPyPlot实现数据可视化
2019/11/19 Python
tensorflow 实现自定义layer并添加到计算图中
2020/02/04 Python
Python2与Python3的区别详解
2020/02/09 Python
Python使用jpype模块调用jar包过程解析
2020/07/29 Python
Python爬虫设置Cookie解决网站拦截并爬取蚂蚁短租的问题
2021/02/22 Python
通过CSS3的object-fit来调整图片适配尺寸的技巧简介
2016/02/27 HTML / CSS
2015年元旦联欢晚会活动总结
2014/11/28 职场文书
学习经验交流会策划书
2015/11/02 职场文书
Oracle设置DB、监听和EM开机启动的方法
2021/04/25 Oracle
【海涛DOTA】D-cup邀请赛NV.cn vs DT.Love
2022/04/01 DOTA
MySQL中order by的执行过程
2022/06/05 MySQL