NumPy数值计算基础(数组的索引)

数组索引

(1)一维数组索引: 类似于列表切片

import numpy as np

arr = np.arange(10)
print(arr)
# 结果: [0 1 2 3 4 5 6 7 8 9]

print(arr[2:6])  
# 结果: [2 3 4 5]

print(arr[0::2])
# 结果: [0 2 4 6 8]

print(arr[-1::-2])
# 结果: [9 7 5 3 1]

arr[4] = 15
print(arr)
# 结果: [ 0  1  2  3 15  5  6  7  8  9]

 

(2)二维数组索引(行与列都是从索引0开始算起) 

方法一:

import numpy as np

arr = np.array([[1,2,3,4,5],[4,5,6,7,8],[7,8,9,10,11]])
print(arr)
# 结果:
# [[ 1  2  3  4  5]
#  [ 4  5  6  7  8]
#  [ 7  8  9 10 11]]

print('索引第0行,第3、4列的元素为: ',arr[0,3:5])
# 结果: [4 5] 

print('索引第1,2行,第3、4列的元素为: ',arr[1:3,3:5])
# 结果: 
# [[ 7  8] 
#  [10 11]]

print('索引中,第3列的所有元素: ',arr[0:,2])
# 结果: [3 6 9]

 

方法二:  元组中的行与列一一对应, 例如题中第0行第1列;  第1行第2列;  第2行第3列 ;

import numpy as np

arr = np.array([[1,2,3,4,5],[4,5,6,7,8],[7,8,9,10,11]])
print(arr)
# 结果:
# [[ 1  2  3  4  5]
#  [ 4  5  6  7  8]
#  [ 7  8  9 10 11]]

print(arr[(0,1,2),(1,2,3)])
# 结果: [ 2  6 10] 

print(arr[0,1],arr[1,2],arr[2,3])
# 结果: 2  6 10

print('第1,2行中的第0,2,3列元素为: ',arr[1:3,(0,2,3)])
# 结果:
# [[ 4  6  7]
#  [ 7  9 10]]

 

方法三:  通过bool值取值(1为取,0为不取) 

import numpy as np

arr = np.array([[1,2,3,4,5],[4,5,6,7,8],[7,8,9,10,11]])
print(arr)
# 结果:
# [[ 1  2  3  4  5]
#  [ 4  5  6  7  8]
#  [ 7  8  9 10 11]]

mask = np.array([1,0,1], dtype = np.bool)  # 一维列表(1为取,0为不取),类型为bool
print(arr[mask,2])  # arr[满足条件的行,第几列]
# 此例子应取第0行第2列与第2行第2列
# 结果: [3 9]

mask = np.array([1,0,1], dtype = np.bool)
mask1 = np.array([0,1,0,0,1], dtype = np.bool)
# mask为行数(1为取,0为不取); 第0,2行满足条件 [[ 1  2  3  4  5] [ 7  8  9 10 11]]
# mask1为列数(1为取,0为不取); 第2,4列满足条件
# 结果应取[(0,2),(1,4)]
# 注意: 行数和列数要一一对应
print(arr[mask,mask1])  
# 结果: [2 11]
print(arr[(0,2),(1,4)]) # 实现效果同arr[mask,mask1]
# 结果: [2 11]
import numpy as np

# 取第1、3、8行,每一行所有对应第2、4、9列的值
arr = np.arange(100).reshape((10,10))
print(arr)
# 结果:
# [[ 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 32 33 34 35 36 37 38 39]
#  [40 41 42 43 44 45 46 47 48 49]
#  [50 51 52 53 54 55 56 57 58 59]
#  [60 61 62 63 64 65 66 67 68 69]
#  [70 71 72 73 74 75 76 77 78 79]
#  [80 81 82 83 84 85 86 87 88 89]
#  [90 91 92 93 94 95 96 97 98 99]]

arr = np.arange(100).reshape((10,10))
mask = np.array([0,1,0,1,0,0,0,0,1,0],dtype=np.bool)
print(arr[mask][:,(2,4,9)])
# 结果:
# [[12 14 19]
#  [32 34 39]
#  [82 84 89]]

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值