首页 > 其他分享 >numpy中的索引下标为None的各种情况

numpy中的索引下标为None的各种情况

时间:2023-08-16 22:35:29浏览次数:43  
标签:None 下标 shape https 维度 array numpy

REF

https://zhuanlan.zhihu.com/p/486373530?utm_id=0

 

None实际上是增加了一个维度,它不是原维度的索引。

以一维为例

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

( 注意,这个一维数组的shape是(3,),而不是(1,3),初学者很容易犯错。)

如果想把x的shape变成(1,3),只需要把None放在第一个维度的位置,以下两种写法等价:

x[None,:]
x[None]

结果如下:

array([[0, 1, 2]])

如果想把x的shape变成(3,1),只需要把None放在第二个维度的位置:

x[:,None]

结果如下:

array([[0],
       [1],
       [2]])

其实,None可以任意添加和组合,例如下面的写法:

x[None,:,None,None]

结果如下:

array([[[[0]],
        [[1]],
        [[2]]]])

这个数组的shape是(1,3,1,1)。

以二维为例

x = np.arange(6).reshape((2,3))

x如下:

array([[0, 1, 2],
       [3, 4, 5]])

在第一个维度插入,以下三种写法等价:

x[None]
x[None,:]
x[None,:,:]

输出结果如下,shape为(1, 2, 3):

array([[[0, 1, 2],
        [3, 4, 5]]])

在第二个维度插入,以下两种写法等价:

x[:,None]
x[:,None,:]

输出结果如下,shape为(2, 1, 3):

array([[[0, 1, 2]],
       [[3, 4, 5]]])

在第三个维度插入:

x[:,:,None]

输出结果如下,shape为(2, 3, 1):

array([[[0],
        [1],
        [2]],

       [[3],
        [4],
        [5]]])

 

更高维的情况以此类推。

这种写法一般在进行矩阵运算的时候会用到。比如:

x = np.arange(5)
x[:, None] + x[None, :]

这样可以很优雅地获得 列向量+行向量 的结果(划重点:优雅~):

array([[0, 1, 2, 3, 4],
      [1, 2, 3, 4, 5],
      [2, 3, 4, 5, 6],
      [3, 4, 5, 6, 7],
      [4, 5, 6, 7, 8]])

参考

  1. ^https://numpy.org/doc/1.22/user/basics.indexing.html?highlight=slice#slicing-and-striding
  2. ^https://numpy.org/doc/1.22/reference/constants.html#numpy.newaxis
  3. ^https://numpy.org/doc/1.22/user/basics.indexing.html?highlight=slice#dimensional-indexing-tools

标签:None,下标,shape,https,维度,array,numpy
From: https://www.cnblogs.com/emanlee/p/17636376.html

相关文章

  • Numpy(一)
    Numpy数据的维度从一个数据到一组数据维度:一组数据的组织形式一维数据一维数据由对等关系的有序或无序数据构成,采用线性方式组织,对应列表、数组和集合等概念列表和数组区别列表:数据类型可以不同数组:数据类型相同二维数据二维数据由多个一维数据构成,是一维数据的组......
  • C++ 调用 Python 接口 Mat转Numpy
    参考网站:https://blog.csdn.net/qq7835144/article/details/106073110?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-1&spm=1001.2101.3001.4242https://blog.csdn.net/weixin_46400740/article/details/116711323?spm=1001.2014.3001.5501 1、配......
  • 软件测试|Python科学计算神器numpy教程(五)
    NumPy的高级索引功能前言NumPy是Python中最受欢迎的科学计算库之一,它提供了丰富的功能来处理和操作数组数据。在本文中,我们将深入了解NumPy的高级索引功能,这些功能允许我们根据特定条件或索引数组来访问和修改数组的元素,为数据科学和数组操作提供了更大的灵活性和控制力。NumP......
  • 软件测试|Python科学计算神器numpy教程(六)
    NumPy的广播机制前言NumPy是Python中最受欢迎的科学计算库之一,它提供了高性能的多维数组对象和丰富的数组操作功能。其中,广播机制是NumPy的重要特性之一,它允许不同形状的数组进行算术运算,提供了灵活而高效的数组操作能力。在本文中,我们将深入探讨NumPy的广播机制,以便更好地理解......
  • python 判空 is None 和 if not None 对比
    Thanksforcomments.Ihavetestedtheperformbetweenthese:importtimeitdefusing_is_none(variable):returnvariableisNonedefusing_if_not_none(variable):returnnotvariablevariable=Noneprint("Using'isNone':",......
  • numpy-常用函数总结
    numpy-常用函数总结目录numpy-常用函数总结1.Axis理解1.1Axis维度1.2三维及多维数组1.3总结2.创建数组2.1使用np.array创建2.2使用np.arange创建2.3np.random.random2.4np.random.randint2.5特殊函数2.5.1np.zeros2.5.2np.ones2.5.3np.full2.5.4np.eye2.6.注意3.......
  • 2023-08-08:给你一棵 n 个节点的树(连通无向无环的图) 节点编号从 0 到 n - 1 且恰好有 n
    2023-08-08:给你一棵n个节点的树(连通无向无环的图)节点编号从0到n-1且恰好有n-1条边给你一个长度为n下标从0开始的整数数组vals分别表示每个节点的值同时给你一个二维整数数组edges其中edges[i]=[ai,bi]表示节点ai和bi之间有一条无向边一条好路......
  • 2023-08-08:给你一棵 n 个节点的树(连通无向无环的图) 节点编号从 0 到 n - 1 且恰好有 n
    2023-08-08:给你一棵n个节点的树(连通无向无环的图)节点编号从0到n-1且恰好有n-1条边给你一个长度为n下标从0开始的整数数组vals分别表示每个节点的值同时给你一个二维整数数组edges其中edges[i]=[ai,bi]表示节点ai和bi之间有一条无向边一条好路径需要......
  • Numpy
    官方文档:https://www.numpy.org.cn/article/numpy中的数组importnumpyasnpmy_array=np.array([1,2,3,4,5])print(my_array,my_array.shape,my_array[0])my_array[0]=-2print(my_array)my_new_array=np.zeros((5))print(my_new_array)my_random_array=np.random.......
  • Numpy矩阵拼接
    一、矩阵拼接一、矩阵拼接numpy矩阵拼接常用方法:np.append(arr,values,axis)np.concatenate(arrays,axis,out=None)np.stack(arrays,axis,out=None)np.hstack(tup)np.vstack(tup)①np.append(arr,values,axis)支持数组和数组或数组和数的拼接,不支持三个及以上数组的拼接......