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编程实现语音控制电脑
Apr 01 Python
玩转python爬虫之正则表达式
Feb 17 Python
Python更新数据库脚本两种方法及对比介绍
Jul 27 Python
Python面向对象编程基础解析(二)
Oct 26 Python
利用python和ffmpeg 批量将其他图片转换为.yuv格式的方法
Jan 08 Python
在Pytorch中使用样本权重(sample_weight)的正确方法
Aug 17 Python
python requests证书问题解决
Sep 05 Python
Pytorch中index_select() 函数的实现理解
Nov 19 Python
基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算
Aug 05 Python
基于python实现百度语音识别和图灵对话
Nov 02 Python
pycharm Tab键设置成4个空格的操作
Feb 26 Python
Python编写冷笑话生成器
Apr 20 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.MVC的模板标签系统(二)
2006/09/05 PHP
关于PHP中操作MySQL数据库的一些要注意的问题
2006/10/09 PHP
php实现的Timer页面运行时间监测类
2014/09/24 PHP
php实现Session存储到Redis
2015/11/11 PHP
简单谈谈php浮点数精确运算
2016/03/10 PHP
自制PHP框架之模型与数据库
2017/05/07 PHP
Laravel用户授权系统的使用方法示例
2018/09/16 PHP
基于jquery的DIV随滚动条滚动而滚动的代码
2012/07/20 Javascript
Js+Jq获取URL参数的集中方法示例代码
2014/05/20 Javascript
一个简单的jQuery计算器实现了连续计算功能
2014/07/21 Javascript
jQuery统计上传文件大小的方法
2015/01/24 Javascript
jQuery实现的在线答题功能
2015/04/12 Javascript
JavaScript通过代码调用Flash显示的方法
2016/02/02 Javascript
封装获取dom元素的简单实例
2016/07/08 Javascript
Three.js的使用及绘制基础3D图形详解
2017/04/27 Javascript
React Navigation 使用中遇到的问题小结
2018/05/08 Javascript
微信小程序如何修改本地缓存key中单个数据的详解
2019/04/26 Javascript
jQuery实现电梯导航模块
2020/12/22 jQuery
python在windows命令行下输出彩色文字的方法
2015/03/19 Python
import的本质解析
2017/10/30 Python
python ansible服务及剧本编写
2017/12/29 Python
详解python如何在django中为用户模型添加自定义权限
2018/10/15 Python
使用python批量化音乐文件格式转换的实例
2019/01/09 Python
局域网内python socket实现windows与linux间的消息传送
2019/04/19 Python
css3实例教程 一款纯css3实现的发光屏幕旋转特效
2014/12/07 HTML / CSS
CSS3对背景图片的裁剪及尺寸和位置的设定方法
2016/03/07 HTML / CSS
深入剖析webstorage[html5的本地数据处理]
2016/07/11 HTML / CSS
法国和欧洲海边和滑雪度假:Pierre & Vacances
2017/01/04 全球购物
波兰珠宝品牌:YES
2019/08/09 全球购物
德国家具、照明、家居用品网上商店:Wayfair.de
2020/02/13 全球购物
Marlies Dekkers内衣荷兰官方网店:荷兰奢侈内衣品牌
2020/03/27 全球购物
生物制药专业求职信
2014/03/11 职场文书
高一新生军训方案
2014/05/12 职场文书
2014年社区民政工作总结
2014/12/02 职场文书
工作经验交流材料
2014/12/30 职场文书
如何使用php生成zip压缩包
2021/04/21 PHP