Python numpy ndarray 属性 索引 切片 详解


一、ndarray重要属性
二、切片
	1. 一维切片
	2. 二维切片
三、索引
	1.一维索引
	2. 二维索引
	3. 布尔索引
	4. 非运算
	5. 或运算
	6. 与运算


一、ndarray 的重要属性。

  1. dtype属性:返回ndarray数组的数据类型,数据类型的种类。
  2. ndim属性:返回数组维度的数量。
  3. shape属性:返回数组对象的尺度,对于矩阵,即n行m列,shape是一个元组(tuple)。
  4. size属性:返回用来保存元素的数量,相当于shape中n×m的值。
  5. 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])

猜你喜欢

转载自blog.csdn.net/qq_35240689/article/details/126967606
今日推荐