Python | numpy基础:神奇索引

本文介绍了Numpy库中的一种特殊索引方式——神奇索引,通过使用整数数组进行索引,实现对多维数组的高效选取。示例展示了如何通过整数数组组合选取数组的特定行,以及多个整数数组的复合索引。同时,强调了神奇索引会复制数据,而非创建视图,改变副本不会影响原始数组。

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

import numpy as np

#numpy数组的神奇索引。“神奇索引”是一个术语:使用整数数组进行数据索引。即方括号[]里,是整数数组。

#创建数组
arr = np.empty((8,4))
for i in range(8):#固定搭配,等于matlab的for i=0:7
    arr[i] = i

print(arr)

#使用一个整数数组作为索引
print(arr[[4, 3, 0, 6]])#神奇索引,利用整数数组索引,将第4、3、0、6行取出,组成一新的数组
print(arr[[-3, -5, -7]])

#使用多个整数数组作为索引
arr1 = np.arange(32).reshape((8,4))
print(arr1)
print(arr1[[1, 5, 7, 2], [0, 3, 1, 2]])#选中了(1,0)、(5,3)、(7,1)、(2,2)组成一个新的一维数组
arr2 = arr1[[1, 5, 7, 2], [0, 3, 1, 2]]#神奇索引是复制,不是原数组的视图,
arr2 = 1
print(arr1)

#结论:
#(1)神奇索引,是在方括号中使用整数数组。
#(2)神奇索引是复制,而不是原数组的视图。因此,改变神奇索引的值,不会改变原数组的值

输出结果:

[[0. 0. 0. 0.]
 [1. 1. 1. 1.]
 [2. 2. 2. 2.]
 [3. 3. 3. 3.]
 [4. 4. 4. 4.]
 [5. 5. 5. 5.]
 [6. 6. 6. 6.]
 [7. 7. 7. 7.]]
[[4. 4. 4. 4.]
 [3. 3. 3. 3.]
 [0. 0. 0. 0.]
 [6. 6. 6. 6.]]
[[5. 5. 5. 5.]
 [3. 3. 3. 3.]
 [1. 1. 1. 1.]]
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]
 [16 17 18 19]
 [20 21 22 23]
 [24 25 26 27]
 [28 29 30 31]]
[ 4 23 29 10]
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]
 [16 17 18 19]
 [20 21 22 23]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值