Python中数组的索引方式(二维数组索引,布尔索引)和数组修改(增删行或列)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、一般索引
    • 一维数组
    • 二维数组
  • 二、布尔索引
  • 数组的修改
    • 删除(行或列)
    • 增加(行或列)


前言

Python中数组的索引方式(二维数组索引,布尔索引)和数组修改(行,列)

一、一般索引

一维数组

import numpy as np
a=np.array([1,2,3,4,5,6])

print(a[[1,3,5]])   #一维数组索引,输出[2 4 6]
print(a[[-1,-2,-3]])    #一维数组索引,输出[6,5,4]

二维数组

b=np.array(((1,2,3,4,5),(6,7,8,9,10),(11,12,13,14,15),(16,17,18,19,20)))

print(b[2])     #
输出第三行全部元素:[11 12 13 14 15]
print(b[2,:])   #输出第三行全部元素:[11 12 13 14 15]
print(b[:,1])   #输出第二列所有元素:[ 2  7 12 17]

b[2]和b[2,:]输出的结果是一样的,那是否能说明他们是等价的呢?答案是否
b[2] 返回的是一个一维数组,包含了二维数组 b 的第三行的所有元素。
b[2,:] 返回的是一个一维数组,也包含了二维数组 b 的第三行的所有元素,但是保持了二维数组的结构,即返回一个行向量。

print(b[[1,2],1:3])     #输出第2、3行,第2、3列的元素:[[ 7  8][12 13]]
print(b[1:3,1:3])       #输出第2、3行,第2、3列的元素:[[ 7  8][12 13]]


二、布尔索引

from numpy import array, nan, isnan
a = array([[1, nan, 2],[4, nan, 3]])
b = a[~isnan(a)]
print(b)

先介绍下引进的几个函数的用法:
nan 提供了处理包含缺失值的数据的方法,如过滤、填充等。
isnan函数中:
如果参数数组中对应位置的元素是 NaN,则返回的布尔数组相应位置的元素为 True。
如果参数数组中对应位置的元素不是 NaN,则返回的布尔数组相应位置的元素为 False。
在这个例子中,isnan(a) 返回的布尔掩码是:

[[False  True False]
 [False  True False]]

~isnan(a)对结果进行取反:

[[ True False  True]
 [ True False  True]]

print(b):

[1. 2. 4. 6.]

为什么数组中每个元素后面有个点? 是因为在 NumPy 中,数组默认情况下被创建为浮点数类型(float)。


数组的修改

删除(行或列)

import numpy as np
x = np.array([[1,2],[3,4],[5,6]])
y1 = np.delete(x,1,axis=0)	#删除第二行元素[3,4]
y2= np.delete(x,1,axis=1)	#删除第二列的元素
print(y1)	
print("\n")
print(y2)

axis=0代表的是行,1代表的是列
输出结果:

[[1 2]
 [5 6]]


[[1]
 [3]
 [5]]

增加(行或列)

import numpy as np
x = np.array([[1,2],[3,4],[5,6]])
a = np.append(x,[[7,8]], axis=0)  #增加一行
b = np.append(x,[[9],[10],[11]],axis=1) #增加一列
print(a)
print("\n")
print(b)

输出结果:

[[1 2]
 [3 4]
 [5 6]
 [7 8]]


[[ 1  2  9]
 [ 3  4 10]
 [ 5  6 11]]

你可能感兴趣的:(python,前端,后端,开发语言)