python--ndarray--切片和索引

ndarray 对象的内容可以通过索引或切片来访问和修改 ,与python中list的切片操作一样

ndarry 数组可以基于0-n 的下标进行索引,切片对象可以通过内置的slice函数,并设置start,stop 

及step参数进行 从原数组中切割出一个新数组

import numpy as np
arr = np.arange(10)
print(arr[1])

#从索引2开始到索引7 停止 间隔为2

s = slice(2,7,2)
print(arr)
print(arr[s])
1
[0 1 2 3 4 5 6 7 8 9]
[2 4 6]

可以使用: 代替 slice

所示:

start:stop:step

切片还可以包括省略号... 来使选择元组的长度与数组的维度相同,如果在行位置使用省略号 它将返回包含行中元素的ndarry

import numpy as np
arr = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15]])
print(arr)
print("---------")
# 第二列元素
print(arr[...,1])
print("-------------")
#第二行元素
print(arr[1,...])
print(arr[...,1:])

[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]
 [13 14 15]]
---------
[ 2  5  8 11 14]
-------------
[4 5 6]
[[ 2  3]
 [ 5  6]
 [ 8  9]
 [11 12]
 [14 15]]

高级索引

import numpy as np

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

rows = np.array([[0,0],[3,3]])
cols = np.array([[0,2],[0,2]])
print("\n")
print(arr[rows,cols])
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]
[1 5 7]


[[ 1  3]
 [10 12]]

布尔索引

布尔索引通过布尔运算(如:比较运算符)来获取符合指定条件的元素的数组

打印大于5 的元素

import numpy as np
arr = np.array([[0,1,2],[3,4,5],[6,7,8],[9,10,11]])
print(arr[arr>5])
[ 6  7  8  9 10 11]

使用 ~(取补运算符)来过滤NaN

import numpy as np 

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

arr = np.array([np.nan,1,2,np.nan,4,5,6])
print(arr)
print(arr[~np.isnan(arr)])
[nan  1.  2. nan  4.  5.  6.]
[1. 2. 4. 5. 6.]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值