数组的索引与切片

一、基础操作

一维数组: 例如 list 的用法

多维数组:

                定位一个元素  a[行][列]

                定位多个元素 a[ ... ,列] (返回一维数组)   "..." 代表 所有行

注意 : a[...][1] == a[1] 不同于 a[... ,1]

                

二、高级操作

1. 整数 数组

      1.精准获得数组数据: 通过 行序列 列序列 一 一 对应 , 返回一维数组  

x = np.array([
        [1,  2,1,1],
        [3,  4,1,2],
        [5,  6,2,3]
    ])
#[0,1,2]代表行索引;[0,1,0]代表列索引
y = x[
    [0,1,2],[0,1,0]
] 

    2. 获得 数组的一个片段 (多行多列) 

a = np.array([
        [1,2,3], 
        [4,5,6],
        [7,8,9]
    ])
# 行取得2行和3行,列取得2列和3列
b = a[1:3, 1:3]
b


#%%

# 1:3 == [1,2]
c = a[1:3,[1,2]]
# ... 表示所有行,1: 表示从第二列开始的所有列
d = a[...,1:]

b = a[1:3, 1:3]

# 1:3 == [1,2]  (第二列 和 第三列 )
c = a[1:3,[1,2]]

# ... 表示所有行,1: 表示从第二列开始的所有列
d = a[...,1:]

3.布尔型索引

x = np.array([[ 0,  1,  2],[ 3,  4,  5],[ 6,  7,  8],[ 9, 10, 11]])
x[x%2!=0]=-1
print(x)

 1.通过 条件判断 对数组内数据进行筛查 ,返回一维数组 

  2. 筛出指定区域数据

b = np.array([[ 0, 1, 2],
              [ 3, 4, 5],
              [ 6, 7, 8],
              [ 9,10,11]])

c=b[[True ,False,True,True],[True,True,True]]

 True 的数目要相同 ,否则会造成 索引不匹配

如果所需求的数据不在 选定区域 ,例如 2行3列 True 个数不同, 则我们 所选择的做法是,先选择所需的行, 再选择所需的列。

三、广播机制

两个数组进行 运算时 所采用的机制 

1. 如果 a1.shape() ==  a2.shape() 可以进行运算 

2.

广播的规则:

  • 让所有输入数组都向其中形状最长的数组看齐,形状中不足的部分都通过在前面加 1 补齐。
  • 输出数组的形状是输入数组形状的各个维度上的最大值。
  • 如果输入数组的某个维度和输出数组的对应维度的长度相同或者其长度为 1 时,这个数组能够用来计算,否则出错。
  • 当输入数组的某个维度的长度为 1 时,沿着此维度运算时都用此维度上的第一组值。\

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值