索引的下标和遍历和切片(numpy)

导包

import numpy as np
a = np.random.randint(10, 50, size=20)
a
#array([12, 43, 16, 18, 13, 44, 18, 26, 26, 20, 27, 39, 30, 10, 24, 43, 27,
#      18, 16, 22])

a[(a > 20) & (a < 30)]  # 通过下标获取 大于 20 且 小于 30 的数
# array([26, 26, 27, 24, 27, 22])

a[5]     # 也可通过下标获取对应的值
#  44

b = np.array([2, 5, 6])  # 获取下标为第二个 第五个 第六个的数
a[b]      #  获取 b 里对应的值

#  array([16, 44, 18])

c = np.array([True, False, True, False, True, True, False, True, False, True, True, False, True, False, True,True, False, True, False, True ])
a[c]    # 只获取 对应下标为True 的数据

#  array([12, 16, 13, 44, 26, 20, 27, 30, 24, 43, 18, 22])

x = np.random.randint(5, 50, size=(3, 4, 5))
x  # 生成一个(3,4,5) 的5-50的随机数组
#array([[[20, 34, 25, 25,  6],
 #       [37, 19, 17, 44, 26],
 #      [20, 10, 33, 22, 38],
 #     [36, 37,  6, 15, 47]],
#
 #      [[45, 22, 34, 26, 43],
 #      [25, 10, 22, 29, 30],
 #      [43, 43,  5, 26, 38],
 #      [31, 18, 29, 29, 13]],
#
 #      [[31, 33, 35, 11, 10],
 #      [45,  5, 18, 44, 39],
 #     [15,  7, 41, 17, 22],
 #    [18, 40, 41, 28, 13]]])
 
#  可以用传统的 for...in...遍历取出所有的数据
for i in x:
	for j in i:
		for k in j:
			print(k) #数字太多了 就不放出来了  有兴趣的话自己可以跑一跑 

#  numpy 里有一种遍历的方法 直接取出搜所有元素 和上面的结果一样 

for i in np.nditer:
	print(i)  #  和上面的结果时一样的

#  切片
n = np.random.randint(2, 50, size=(4, 5, 6))
n 
#array([[[ 6, 30, 23, 20,  9, 11],
#       [35,  7, 18, 35, 32, 36],
#        [36,  3, 34, 24, 18, 32],
#        [12, 45, 30, 44, 27, 40],
#        [10, 45, 46, 12, 36, 16]],
#
#      [[48, 32, 33, 21, 26, 34],
#        [33, 14, 25, 20, 35,  4],
#        [41, 41,  3, 45, 39, 24],
#        [13, 39, 36,  8,  5, 13],
#        [36, 42, 39, 43, 49, 17]],
#
#       [[46, 28, 37, 22, 19, 28],
#        [23, 31, 40, 23, 23, 19],
#        [49,  6, 15, 49, 35, 43],
#        [35, 30, 33, 37, 47, 30],
#        [24, 48, 28, 27, 22,  6]],
#
#       [[15, 33, 22, 16, 44, 29],
#        [39, 41, 46,  8, 16, 30],
#        [25, 11, 33, 24, 26, 13],
#        [12, 10, 49, 41, 15, 12],
#        [38, 47,  2, 42,  4, 33]]]) 

n[1:4:2, 2:0:-1, ::-1] # 第一个逗号是第一维度数组 以此类推

# array([[[24, 39, 45,  3, 41, 41],
#        [ 4, 35, 20, 25, 14, 33]],
#
#       [[13, 26, 24, 33, 11, 25],
#        [30, 16,  8, 46, 41, 39]]])

#  一共有四块数组
# 第一个逗号前(1:4:2)   就是从0开始数第一块 步长为2 所以只取得到第二块和第四快
# 第二个逗号前(2:0:-1)
#  就是 就是取第二块和第四块的第三排的数组  因为下标时2  步长为-1 ,所以一直往前面取 因为切片是左闭右开 所以 取不到第0排 
# 最后一个 (::-1)
#  就是从后往前取数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值