精华内容
下载资源
问答
  • 根据我的理解,关于多维数组索引与切片,不需要可以去记他的模式,这一小块,唯一需要理解的是这个多维数组的shape.只要把这个概念真正理解了,关于索引与切片问题迎刃而解了; 首先初始化上面的这样一个多维...

    根据我的理解,关于多维数组的索引与切片,不需要可以去记他的模式,这一小块,唯一需要理解的是这个多维数组的shape.只要把这个概念真正理解了,关于索引与切片问题迎刃而解了;

    首先初始化上面的这样一个多维数组x,观察其x的数组结构,然后看x.shape=(2,3,3). 观察这个结果,其实含义可以理解为,后面的(3,3)是一个矩阵,表示其行数与列数,前面的2表示到底有几个这样的矩阵。你再查看其x的表示结构,是不是很好理解了。

    那么现在我们要利用索引方式取特定位置上的数,注意其索引是从0开始的,那么取几个索引,看看是不是理想的结果、

    根据理解,x[0][2][1]表示取第一个矩阵中,第三行第二列的数字。(注意索引是从0开始的)

    ---------------------------------------------------------------------------------------------------------------------------

    如果上面的你真正理解,那么切片也不是什么困难的,下面来切一下:

    基于上面的结果,这里做了两个切片。(注意切片的值。如1:3,  实际上只能取1,2  这里要注意)

    其中一个切片为x[1][0][1:3]  实际上可以理解为我要在第二个矩阵中做切片。怎么切那? 取第一行的1~2列、、看看结果、、(还是要注意索引从0开始哦)

    另外一个切片是x[0][2][:2]

     

     

     

     

     

     

    展开全文
  • 多维数组索引与切片:3. 条件索引ndarray的维数转换 ndarray的矩阵运算 数组是编程中的概念,矩阵、矢量是数学概念。 在计算机编程中,矩阵可以用数组形式定义,矢量可以用结构定义! 1....

    ndarray的矩阵运算

    数组是编程中的概念,矩阵、矢量是数学概念。

    在计算机编程中,矩阵可以用数组形式定义,矢量可以用结构定义!

    1. 矢量运算:相同大小的数组间运算应用在元素上

    示例代码(1):

    # 矢量与矢量运算
    arr = np.array([[1, 2, 3],
                    [4, 5, 6]])
    
    print("元素相乘:")
    print(arr * arr)
    
    print("矩阵相加:")
    print(arr + arr)
    

    运行结果:

    元素相乘:
    [[ 1  4  9]
     [16 25 36]]
    
    矩阵相加:
    [[ 2  4  6]
     [ 8 10 12]]
    

    2. 矢量和标量运算:“广播” - 将标量"广播"到各个元素

    示例代码(2):

    # 矢量与标量运算
    print(1. / arr)
    print(2. * arr)
    

    运行结果:

    [[ 1.          0.5         0.33333333]
     [ 0.25        0.2         0.16666667]]
    
    [[  2.   4.   6.]
     [  8.  10.  12.]]
    

    ndarray的索引与切片

    1. 一维数组的索引与切片

    与Python的列表索引功能相似

    示例代码(1):

    # 一维数组
    arr1 = np.arange(10)
    print(arr1)
    print(arr1[2:5])
    

    运行结果:

    [0 1 2 3 4 5 6 7 8 9]
    [2 3 4]
    

    2. 多维数组的索引与切片:

    arr[r1:r2, c1:c2]

    arr[1,1] 等价 arr[1][1]

    [:] 代表某个维度的数据

    示例代码(2):

    # 多维数组
    arr2 = np.arange(12).reshape(3,4)
    print(arr2)
    
    print(arr2[1])
    
    print(arr2[0:2, 2:])
    
    print(arr2[:, 1:3])
    

    运行结果:

    [[ 0  1  2  3]
     [ 4  5  6  7]
     [ 8  9 10 11]]
    
    [4 5 6 7]
    
    [[2 3]
     [6 7]]
    
    [[ 1  2]
     [ 5  6]
     [ 9 10]]
    

    3. 条件索引

    布尔值多维数组:arr[condition],condition也可以是多个条件组合。

    注意,多个条件组合要使用 & | 连接,而不是Python的 and or

    示例代码(3):

    # 条件索引
    
    # 找出 data_arr 中 2005年后的数据
    data_arr = np.random.rand(3,3)
    print(data_arr)
    
    year_arr = np.array([[2000, 2001, 2000],
                         [2005, 2002, 2009],
                         [2001, 2003, 2010]])
    
    is_year_after_2005 = year_arr >= 2005
    print(is_year_after_2005, is_year_after_2005.dtype)
    
    filtered_arr = data_arr[is_year_after_2005]
    print(filtered_arr)
    
    #filtered_arr = data_arr[year_arr >= 2005]
    #print(filtered_arr)
    
    # 多个条件
    filtered_arr = data_arr[(year_arr <= 2005) & (year_arr % 2 == 0)]
    print(filtered_arr)
    

    运行结果:

    [[ 0.53514038  0.93893429  0.1087513 ]
     [ 0.32076215  0.39820313  0.89765765]
     [ 0.6572177   0.71284822  0.15108756]]
    
    [[False False False]
     [ True False  True]
     [False False  True]] bool
    
    [ 0.32076215  0.89765765  0.15108756]
    
    #[ 0.32076215  0.89765765  0.15108756]
    
    [ 0.53514038  0.1087513   0.39820313]
    

    ndarray的维数转换

    二维数组直接使用转换函数:transpose()

    高维数组转换要指定维度编号参数 (0, 1, 2, …),注意参数是元组

    示例代码:

    arr = np.random.rand(2,3)    # 2x3 数组
    print(arr)    
    print(arr.transpose()) # 转换为 3x2 数组
    
    
    arr3d = np.random.rand(2,3,4) # 2x3x4 数组,2对应0,3对应1,4对应3
    print(arr3d)
    print(arr3d.transpose((1,0,2))) # 根据维度编号,转为为 3x2x4 数组
    

    运行结果:

    # 二维数组转换
    # 转换前:
    [[ 0.50020075  0.88897914  0.18656499]
     [ 0.32765696  0.94564495  0.16549632]]
    
    # 转换后:
    [[ 0.50020075  0.32765696]
     [ 0.88897914  0.94564495]
     [ 0.18656499  0.16549632]]
    
    
    # 高维数组转换
    # 转换前:
    [[[ 0.91281153  0.61213743  0.16214062  0.73380458]
      [ 0.45539155  0.04232412  0.82857746  0.35097793]
      [ 0.70418988  0.78075814  0.70963972  0.63774692]]
    
     [[ 0.17772347  0.64875514  0.48422954  0.86919646]
      [ 0.92771033  0.51518773  0.82679073  0.18469917]
      [ 0.37260457  0.49041953  0.96221477  0.16300198]]]
    
    # 转换后:
    [[[ 0.91281153  0.61213743  0.16214062  0.73380458]
      [ 0.17772347  0.64875514  0.48422954  0.86919646]]
    
     [[ 0.45539155  0.04232412  0.82857746  0.35097793]
      [ 0.92771033  0.51518773  0.82679073  0.18469917]]
    
     [[ 0.70418988  0.78075814  0.70963972  0.63774692]
      [ 0.37260457  0.49041953  0.96221477  0.16300198]]]
    

    Copyright © BigCat all right reserved,powered by Gitbook「Revision Time: 2017-03-12 22:44:22」

    展开全文
  • numpy数组索引与切片

    2019-07-30 10:52:07
    数组索引 一维数组索引 arr1=np.arange(10) print(arr1) 取第一个 print(arr1[0]) 取最后一个 print(arr1[-1]) 取数组中[0,3) print(arr1[0:3]) 取数组[0,3)步长(step)为2 print(arr1[0:3:2]) 二维数组 arr1=np....

    数组索引

    导包import numpy as np

    一维数组索引

    arr1=np.arange(10)
    print(arr1)
    取第一个
    print(arr1[0])
    取最后一个
    print(arr1[-1])
    取数组中[0,3)
    print(arr1[0:3])
    取数组[0,3)步长(step)为2
    print(arr1[0:3:2])
    

    在这里插入图片描述

    二维数组

    arr1=np.random.randint(0,99,(3,4))
    print(arr1)
    print('......')
    取单独的一行
    print(arr1[0])
    print('......')
    取连续多行
    print(arr1[0:2])
    print('......')
    取单独的元素,第一行最后一个
    print(arr1[0][-1])
    print('......')
    取元素,第一行最后一列
    print(arr1[0,-1])
    print('......')
    取元素,第三列
    print(arr1[:,2])
    取连续行和列
    print(arr1[0:2,0:2])
    print('......')
    取不连续多行
    print(arr1[[0,2]])
    print('......')
    取不连续多列
    print(arr1[:,[0,2]])
    print('......')
    这个取出来的不是不连续多行不连续多列,而是[0,0]和[2,-1]
    print(arr1[[0,2],[0,2]])
    print('......')
    这样取出来的是连续多行不连续多列
    print(arr1[[0,2]][:,[0,-1]])
    print('......')
    

    在这里插入图片描述
    在这里插入图片描述

    多维数组

    多维数组的取值和上面的类似

    条件索引

    与:&
    或:|
    非:~

    arr1=np.array([[2010,2011,2012],[2013,2014,2015],[2019,2018,2020]])
    print(arr1)
    大于2013的数据为真
    print(arr1>2013)
    取出大于2013的数据
    print(arr1[arr1>2013])
    取出大于2013小于2016的数据注意单个条件要加小括号
    print(arr1[(arr1>2013)&(arr1<2016)])
    

    在这里插入图片描述

    展开全文
  • numpy库多维数组的类型和列表的类型非常类似,同样有索引切片功能: 索引:获取数组中特定位置元素的过程 切片:获取数组元素子集的过程 1、一维数组的索引切片Python的列表类似 In [34]: a = np.a...

    numpy库多维数组的类型和列表的类型非常类似,同样有索引和切片功能:

    • 索引:获取数组中特定位置元素的过程
    • 切片:获取数组元素子集的过程

    1、一维数组的索引和切片:与Python的列表类似

    In [34]: a = np.arange(10)
    
    In [35]: a[0]
    Out[35]: 0
    
    In [36]: a[1:4:2]  #起始编号: 终止编号(不含): 步长,3元素冒号分割
    Out[36]: array([1, 3])

    2、多维数组的索引

    In [37]: a = np.arange(12).reshape([3,4])
    
    In [38]: a
    Out[38]:
    array([[ 0,  1,  2,  3],
           [ 4,  5,  6,  7],
           [ 8,  9, 10, 11]])
    #每个维度一个索引值,逗号分割
    In [39]: a[1,1]
    Out[39]: 5
    #每个维度取切片用冒号,逗号分割
    In [40]: a[1:,1:]
    Out[40]:
    array([[ 5,  6,  7],
           [ 9, 10, 11]])
    
    #每个维度可以使用步长跳跃切片
    In [41]: a[::2,1]
    Out[41]: array([1, 9])
    
    In [42]: a[::2,1:]
    Out[42]:
    array([[ 1,  2,  3],
           [ 9, 10, 11]])
    #多维数组取步长要用冒号
    In [44]: a[0::2,1:]
    Out[44]:
    array([[ 1,  2,  3],
           [ 9, 10, 11]])

    总结:不同维度用逗号隔开,取切片要用冒号,多维数组取步长要用冒号

    展开全文
  • ndarray多维数组对象,生成nadrray,ndarray的数据类型,数组计算,基础索引与切片,数组的切片索引
  • arr = np.array([[2, 0, 0], [0, 3, 2], [1, 2, 1]])#注意,多维数组有两个方括号,matlab不同。 print(arr[0]) print(arr[1,1]) print(arr[1][1]) #结论 #(1)注意numpy的ndarray数组类型matlab矩阵类型的...
  • 数组索引 import numpy as np #TODO 1 数组索引 a = np.arange(10) # 生成一维数组 0-9 print(a) '''[0 1 2 3 4 5 6 7 8 9]''' print(a[1]) #获取索引值为 1 的数据。 '''1''' print(a[[1, 2, 3]]) #获取索引值为 ...
  • 一、Numpy 切片索引 ndarray对象的内容可以通过索引切片来访问和修改,就像 Python 的内置容器对象一样。 如前所述,ndarray对象中的元素遵循基于零的索引。 有三种可用的索引方法类型: 字段访问,基本切片...
  • 数组索引切片主要有以下三个特点: ①数组索引从0开始 ②可以反向索引 ③可以对每一个维度都可以进行切片 '''数组下标从0开始,指的任意维度,下标都从0开始''' a = np.array([[1, 2], [5, 6]]) a ''' array...
  • ndarray数组索引切片: 一维数据的索引和切片python列表类似 >>>a = np.array([1,2,3,4,5]) >>>a[2]#索引 3 >>>a[1:4:2]#切片 array([2,4]) 多维数组的索引和切片: >>>...
  • 多维数组切片索引 import numpy as np b = np.arange(24) print(b) [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23] reshape函数切分的思想,先分两半,对应2,再在每个分3份对应3…… ...
  • ndarray支持在多维数组上的切片操作。为了方便起见,我们可以用一个省略号(...)来表示遍历剩下的维度。(1)举例来说,我们先用arange函数创建一个数组并改变其维度,使之变成一个三维数组:>>>b=np.arange(24)....
  • 切片2.1 slice 函数或start:stop:step2.2 省略号‘...’选择数组的维度2.2 多维数组切片2.3 整数数组索引2.4 布尔索引2.5 花式索引 1. 索引 获取数组中特定位置元素的过程。 Python 中 list 的操作一样,ndarray ...
  • Numpy库002 索引切片 1、一维数组的索引切片 python列表几乎一样 import numpy as np a=np.arange(10) print(a)#[0 1 2 3 4 5 6 7 8 9] #索引 print(a[1])#1 ...2、多维数组索引与切片 impo
  • ndarray数组的索引切片操作和运算一、索引切片操作1、一维数组2、多维数组二、运算 一、索引切片操作 索引:获取数组中特定位置元素的过程 切片:获取数组元素子集的过程 1、一维数组 python的列表操作类似 索引:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,454
精华内容 2,981
关键字:

多维数组的索引与切片