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实现并行抓取整站40万条房价数据(可更换抓取城市)
Dec 14 Python
Python初学时购物车程序练习实例(推荐)
Aug 08 Python
Python数据可视化正态分布简单分析及实现代码
Dec 04 Python
Python实现合并同一个文件夹下所有PDF文件的方法示例
Apr 28 Python
python实现抖音点赞功能
Apr 07 Python
基于Python打造账号共享浏览器功能
May 30 Python
python基于paramiko将文件上传到服务器代码实现
Jul 08 Python
如何基于Python实现word文档重新排版
Sep 29 Python
Python中random模块常用方法的使用教程
Oct 04 Python
5分钟快速掌握Python定时任务框架的实现
Jan 26 Python
Python利用zhdate模块实现农历日期处理
Mar 31 Python
python和C/C++混合编程之使用ctypes调用 C/C++的dll
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中通过curl smtp发送邮件
2012/06/05 PHP
PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
2018/05/31 PHP
使用JS 清空File控件的路径值
2013/07/08 Javascript
js简单实现删除记录时的提示效果
2013/12/05 Javascript
Document.location.href和.replace的区别示例介绍
2014/03/04 Javascript
一个简单的全屏图片上下打开显示网页效果示例
2014/07/08 Javascript
深入分析jquery解析json数据
2014/12/09 Javascript
js实现鼠标感应图片展示的方法
2015/02/27 Javascript
JavaScript实现横向滑出的多级菜单效果
2015/10/09 Javascript
详解Matlab中 sort 函数用法
2016/03/20 Javascript
js获取Html元素的实际宽度高度的方法
2016/05/19 Javascript
基于JavaScript实现单选框下拉菜单添加文件效果
2016/06/26 Javascript
关于Bootstrap按钮组件消除黄框的方法
2017/05/19 Javascript
详解vue使用vue-layer-mobile组件实现toast,loading效果
2018/08/31 Javascript
react用Redux中央仓库实现一个todolist
2019/09/29 Javascript
electron+vue实现div contenteditable截图功能
2020/01/07 Javascript
JS中的const命令你真懂它吗
2020/03/08 Javascript
玩转python selenium鼠标键盘操作(ActionChains)
2020/04/12 Python
linux平台使用Python制作BT种子并获取BT种子信息的方法
2017/01/20 Python
numpy中的delete删除数组整行和整列的实例
2018/05/09 Python
python list转置和前后反转的例子
2019/08/26 Python
jupyter notebook 重装教程
2020/04/16 Python
浅析python 动态库m.so.1.0错误问题
2020/05/09 Python
Python中的With语句的使用及原理
2020/07/29 Python
python 如何利用argparse解析命令行参数
2020/09/11 Python
java关于string最常出现的面试题整理
2021/01/18 Python
路政管理专业推荐信
2013/11/11 职场文书
护理学毕业生求职信
2013/11/14 职场文书
西门豹教学反思
2014/02/04 职场文书
设计大赛策划方案
2014/06/13 职场文书
保密工作承诺书
2014/08/29 职场文书
办理收楼委托书范本
2014/10/09 职场文书
太行山上观后感
2015/06/05 职场文书
2016年禁毒宣传活动总结
2016/04/05 职场文书
利用Python第三方库实现预测NBA比赛结果
2021/06/21 Python
Lakehouse数据湖并发控制陷阱分析
2022/03/31 Oracle