赞
踩
一、ndarray重要属性
二、切片
1. 一维切片
2. 二维切片
三、索引
1.一维索引
2. 二维索引
3. 布尔索引
4. 非运算
5. 或运算
6. 与运算
切片都是前闭后开,即切片结果包括start,但是不包括stop,还支持开始和停止的负索引。
import numpy as np
arr_1d = np.arange(12)
arr_1d[:4] # 省却起始,默认从0开始
arr_1d[6:11]
arr_1d[0:11:2] # 指定步长为 2
arr_1d[12:6:-1] # 反向切片
如果是多维数组,只需在每个维度之间用 ‘,’ 隔开。
import numpy as np
arr_2d = np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]])
arr_2d[0:2, 0:2]
arr_2d[0:2, -3:] #前2行,倒数第3列开始
arr_2d[-2:, ::2] # 倒数第2行开始 列根据步长2,每隔一列取一列
import numpy as np
arr_1d = np.arange(12)
arr_1d[4]
arr_1d[-2] # 反向索引
arr_1d[[2,4,6,7,8,9]] # 同事索引多个
import numpy as np arr_2d = np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]]) arr_2d[1, 2] arr_2d[-1, -1] # 反向索引 # 如果索引比维度少的多维数组,则会获得一个子维数组 arr_2d[2] # 取 index=2 的行 # out array([ 7, 8, 9, 10]) arr_2d[2][0] # index=2 的行后,再去index=0 的列 # out 7 arr_2d[[2,0]] # 同时取 index =2 和 index=0 的行 # out array([[ 7, 8, 9, 10], [ 1, 2, 3, 4]])
布尔索引就是根据条件筛选,判断每个元素在条件下是True还是False,也就是布尔值,当条件判断True时,返回。当条件判断为False时,过滤掉。
import numpy as np
arr_1d = np.arange(12)
arr_1d[[False, False, False, False, False, True, True, True, True, True, True, True]]
# out array([ 5, 6, 7, 8, 9, 10, 11])
arr_1d>=5
# out array([False, False, False, False, False, True,
# True, True, True, True, True, True])
arr_1d[arr_1d>=5]
# out array([ 5, 6, 7, 8, 9, 10, 11])
可用于取不等于某个值的所有元素。
import numpy as np
arr_1d[~(arr_1d>=5)]
# out array([0, 1, 2, 3, 4])
只要对应的二个二进位有一个为1时,结果位就为1。
eg:去除数组中大于某个值,或者小于某个值的所有元素。
import numpy as np
arr_2d = np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]])
(arr_2d>=8) | (arr_2d<=2)
# out array([[ True, True, False, False],
# [False, False, False, False],
# [False, True, True, True]])
arr_2d[(arr_2d>=8) | (arr_2d<=2)]
# out array([ 1, 2, 8, 9, 10])
参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0。
eg:去除数组中大于某个值,且同时小于某个值的所有元素。
import numpy as np
arr_2d = np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]])
arr_2d[(arr_2d<=8) & (arr_2d>=2)]
# ount array([2, 3, 4, 4, 5, 6, 7, 7, 8])
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。