numpy切片与索引

#numpy 基本索引,切片

import numpy as np

ar=np.arange(20)


print (ar[4])
print (ar[:4])#:代表从0开始到第n-1个字段
print (ar[::4])# ::代表以步长为4

#一维数组和列表无区别

4
[0 1 2 3]
[ 0  4  8 12 16]


#二维数组切片
ar=np.arange(16).reshape(4,4)#创建一个4行4列的二维数组

ar

array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])
print (ar[2])
print (ar[2][2])
print (ar[1:3])#去尾不去头
print (ar[2,2])#类似[2][2]

print (ar[:1,2:])#去尾不去头,所以第0行,不包括第一行【1,2,3,4】,2:表示索引为2,即第三个数到最后【2 3】

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


#三维数组切片
ar=np.arange(27).reshape(3,3,3)#三个三行三列
ar
print (ar[0])#打印第一个三行三列
print ('-------')
print (ar[0][1])#在第一个三行三列中截取第二行
print ('-------')
print (ar[0][1][2])#在第一个三行三列中截取第二行的第三个数

#总结: 凡是切片请自动加1,便于记忆

[[0 1 2]
 [3 4 5]
 [6 7 8]]
-------
[3 4 5]
-------
5
#布尔型索引切片,即代入就可以解决
ar=np.arange(12).reshape(3,4)
print (ar)
a=np.array([True,False,True])
b=np.array([True,True,False,False])
print (a)
print (b)
print (ar[a,:])#是true截取,不是不截,先选择行
print (ar[:,b])

print (ar[ar>4])

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

#numpy随机数,较为重要
#numpy.random
a=np.random.normal(size=(4,4))#4行4列的正太分布,类似于抛物线,中间最多
b=np.random.rand(4,4)#4行4列的均匀分布的0-1随机浮点数,类似于面积随机
c=np.random.rand(4,4)*100

#随机整数
print (np.random.randint(2))#0-1之间取随机数
print (np.random.randint(2,10))#2-9里面取随机数
print (np.random.randint(2,10,size=(2,5)))#2-9里面取随机数,然后生成2行5列的数组
0
8
[[4 5 2 3 4]
 [4 7 9 7 9]]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值