Python:numpy.newaxis

本文介绍NumPy中使用np.newaxis和None进行增维的方法,并对比增维前后数组形状的变化,同时展示增维对矩阵转置的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

x1[:,np.newaxis]:增维,转置

 

从字面上是插入新的维度的意思

demo1: 针对一维的情况

>>> b = np.array([1, 2, 3, 4, 5, 6])
>>> b[np.newaxis]
array([[1, 2, 3, 4, 5, 6]])
>>> c = b[np.newaxis]  #equals c = b[np.newaxis,:]
>>> b.shape
(6,)
>>> c.shape
(1, 6)
#看一下转置的时候有什么区别
>>> np.transpose(b)
array([1, 2, 3, 4, 5, 6])
>>> np.transpose(c)
array([[1],
       [2],
       [3],
       [4],
       [5],
       [6]])

#可以看出在矩阵运算的时候还是需要新的维度来规范计算的

 

对于这个问题还有一种方法,偶然看sidekit源码发现的;

>>> a = np.array([1,2,3])
>>> a
array([1, 2, 3])
>>> b = a[None]
>>> b
array([[1, 2, 3]])
>>> a.shape
(3,)
>>> b.shape
(1, 3)

转载于:https://www.cnblogs.com/xianhan/p/9123145.html

### numpy.newaxis 的功能与使用方法 `numpy.newaxis` 是 NumPy 中用于增加数组维度的一个工具。它的作用是在指定位置插入一个新的轴,从而改变数组的形状而不改变其数据[^1]。 #### 基本概念 通过 `numpy.newaxis` 可以将一维数组转换为二维或多维数组。它实际上是一个特殊的对象,在索引操作中可以用来扩展数组的维度。值得注意的是,`numpy.newaxis` 和 Python 的内置常量 `None` 实际上是同一个对象,因此可以用 `None` 替代 `numpy.newaxis` 来实现相同的效果[^2]。 ```python import numpy as np print('np.newaxis和None一样吗:{}'.format(np.newaxis is None)) # 输出: np.newaxis和None一样吗:True ``` #### 示例分析 以下是几个具体的例子来展示如何使用 `numpy.newaxis`: ##### 示例 1:在一维数组前新增一个维度 假设有一个一维数组 `[1, 2, 3]`,可以通过在前面加新轴将其变为 `(1, n)` 形状的二维数组。 ```python X = np.array([1, 2, 3]) print(X.shape) # (3,) Y = X[np.newaxis, :] print(Y.shape) # (1, 3) print(Y) # [[1 2 3]] ``` 这里,`X[np.newaxis, :]` 表示在第一个维度上增加了新的轴,使得原数组变成了一行多列的形式[^4]。 ##### 示例 2:在一维数组后新增一个维度 同样的一维数组 `[1, 2, 3]`,如果希望在其后面添加新轴,则可得到 `(n, 1)` 形状的结果。 ```python Z = X[:, np.newaxis] print(Z.shape) # (3, 1) print(Z) # [[1] # [2] # [3]] ``` 此例中,`X[:, np.newaxis]` 将原始数组转置成了多行单列的样子。 #### 结合 repeat 方法的应用场景 当需要重复某些特定模式的数据结构时,通常会结合 `numpy.repeat()` 函数一起使用。例如创建矩阵填充任务中的辅助变量定义等情形下非常有用[^3]。 ```python A = np.arange(4).reshape((2, 2)) B = A[:, :, np.newaxis].repeat(3, axis=2) print(B.shape) # (2, 2, 3) print(B) """ [[[0 0 0] [1 1 1]] [[2 2 2] [3 3 3]]] """ ``` 上述代码片段展示了如何利用 `numpy.newaxis` 配合 `repeat` 方法沿某一方向复制现有数值序列形成更高阶张量的过程。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值