一、ndarray重要属性
二、切片
1. 一维切片
2. 二维切片
三、索引
1.一维索引
2. 二维索引
3. 布尔索引
4. 非运算
5. 或运算
6. 与运算
一、ndarray 的重要属性。
- dtype属性:返回ndarray数组的数据类型,数据类型的种类。
- ndim属性:返回数组维度的数量。
- shape属性:返回数组对象的尺度,对于矩阵,即n行m列,shape是一个元组(tuple)。
- size属性:返回用来保存元素的数量,相当于shape中n×m的值。
- T属性:返回数组转置。
二、切片。
切片都是前闭后开,即切片结果包括start,但是不包括stop,还支持开始和停止的负索引。
1. 一维切片。
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] # 反向切片
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,每隔一列取一列
三、索引。
1. 一维数组索引
import numpy as np
arr_1d = np.arange(12)
arr_1d[4]
arr_1d[-2] # 反向索引
arr_1d[[2,4,6,7,8,9]] # 同事索引多个
2. 二维数组索引
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]])
3. 布尔索引。
布尔索引就是根据条件筛选,判断每个元素在条件下是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])
4. 非运算。
可用于取不等于某个值的所有元素。
import numpy as np
arr_1d[~(arr_1d>=5)]
# out array([0, 1, 2, 3, 4])
5. 或运算。
只要对应的二个二进位有一个为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])
6. 与运算。
参与运算的两个值,如果两个相应位都为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])