一、ndarray 的重要属性
二、切片
1. 一维切片
1. 二维切片
三、索引
1. 一维数组索引
2. 二维数组索引
3. 布尔索引
4. 非运算
5. 或运算
6. 与运算
一、ndarray 的重要属性dtype属性:返回ndarray数组的数据类型,数据类型的种类。
ndim属性:返回数组维度的数量。
shape属性:返回数组对象的尺度,对于矩阵,即n行m列,shape是一个元组(tuple)。
size属性:返回用来保存元素的数量,相当于shape中n×m的值。
T属性:返回数组转置。
二、切片 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. 非运算
arr_1d[~(arr_1d>=5)]
# out array([0, 1, 2, 3, 4])
5. 或运算
只要对应的二个二进位有一个为1时,结果位就为1。
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
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])
到此这篇关于Python numpy ndarray属性,索引,切片的文章就介绍到这了,更多相关Python numpy ndarray 内容请搜索软件开发网以前的文章或继续浏览下面的相关文章希望大家以后多多支持软件开发网!