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错误处理详解
Sep 28 Python
一张图带我们入门Python基础教程
Feb 05 Python
Python使用Matplotlib实现雨点图动画效果的方法
Dec 23 Python
Python简单实现两个任意字符串乘积的方法示例
Apr 12 Python
解决python字典对值(值为列表)赋值出现重复的问题
Jan 20 Python
python 用for循环实现1~n求和的实例
Feb 01 Python
简单了解Pandas缺失值处理方法
Nov 16 Python
Python ORM编程基础示例
Feb 02 Python
使用Puppeteer爬取微信文章的实现
Feb 11 Python
浅谈pytorch torch.backends.cudnn设置作用
Feb 20 Python
Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
Jun 23 Python
解决hive中导入text文件遇到的坑
Apr 07 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实现中文转数字
2016/02/18 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
PHP getNamespaces()函数讲解
2019/02/03 PHP
基于JQUERY的两个ListBox子项互相调整的实现代码
2011/05/07 Javascript
微信小程序 window_x64环境搭建
2016/09/30 Javascript
Jquery鼠标放上去显示全名的实现方法
2017/02/06 Javascript
前端构建工具之gulp的配置与搭建详解
2017/06/12 Javascript
vue使用xe-utils函数库的具体方法
2018/03/06 Javascript
Redux实现组合计数器的示例代码
2018/07/04 Javascript
jQuery pagination分页示例详解
2018/10/23 jQuery
详解如何在vue项目中使用layui框架及采坑
2019/05/05 Javascript
Vue中computed及watch区别实例解析
2020/08/01 Javascript
微信小程序canvas实现签名功能
2021/01/19 Javascript
[01:40]2014DOTA2国际邀请赛 三冰SOLO赛后采访恶搞
2014/07/09 DOTA
Python实现数据库编程方法详解
2015/06/09 Python
python指定写入文件时的编码格式方法
2018/06/07 Python
判断python字典中key是否存在的两种方法
2018/08/10 Python
python如何获取列表中每个元素的下标位置
2019/07/01 Python
基于Python中random.sample()的替代方案
2020/05/23 Python
使用opencv识别图像红色区域,并输出红色区域中心点坐标
2020/06/02 Python
python语言中有算法吗
2020/06/16 Python
一款利用html5和css3实现的3D立方体旋转效果教程
2016/04/26 HTML / CSS
详解使用HTML5的classList属性操作CSS类
2017/10/13 HTML / CSS
Fossil德国官网:化石手表、手袋、珠宝及配件
2019/12/07 全球购物
澳大利亚在线消费电子产品商店:TobyDeals
2020/01/05 全球购物
Zatchels官网:英国剑桥包品牌
2021/01/12 全球购物
行政文秘岗位职责范本
2014/02/10 职场文书
学习实践科学发展观心得体会
2014/09/10 职场文书
学籍证明模板
2014/11/21 职场文书
实习证明模板
2015/06/16 职场文书
2015重阳节敬老活动总结
2015/07/29 职场文书
2016大学先进团支部事迹材料
2016/03/01 职场文书
手把手教你实现PyTorch的MNIST数据集
2021/06/28 Python
日本动漫十大公认神作:第五现已全网禁播,《死亡笔记》在榜
2022/03/18 日漫
Android自定义scrollview实现回弹效果
2022/04/01 Java/Android
浅谈Redis 中的过期删除策略和内存淘汰机制
2022/04/03 Redis