numpy数组常用操作

数组的维度

改变原数组

import numpy as np
a = np.arange(9) # 一维数组

#original dim
a.shape  --> (9,)

#alter dim
a.shape = (3,3)   #必须size相同
a.shape --> (3,3)

#alter dim
a.resize(2,2)  #可以size 少于原始元素数,多余的数据丢弃
a.shape -->(2,2)
#丢弃的数据找不回来
a.resize(3,3)  #不够的补0

视图变维

a = np.arange(9)
# a.shape-->(9,)

#在视图上改变维度
r = a.reshape(3,3)
r.shape-->(3,3)
a.shape-->(9,)
# 维度不一样 ,但数据一样
#通过视图可以更改原数组
r[0,0] = 100
a[0] --> 100
r1 = r.ravel()

#视图更改原数组
r1[0] = 0
a[0] --> 0

复制变维

a = np.arange(9)
a.shape = (3,3)
a.shape -->(3,3)

# a 展开为一维,并复制一份,a原始维度不变
r = a.flatten()

r[0] = 100000
a[0] #不受影响

数组的切片

#一维数组的切片
a = np.arange(9)
a[:3]
a[2:]
a[::2]
a[::-1] #逆序


#二维数组的切片
a.shape = (3,3)
a[:,0] #选择第一列
a[0,:] #选择第一行
a[2,1] #选择一个数

#多维数组
a = np.arange(12)
a.shape = (2,3,2)
a[:,0,:1]

数组的切片返回视图
a = a r r a y ( [ [ 0 , 1 , 2 ] , [ 3 , 4 , 5 ] , [ 6 , 7 , 8 ] ] ) a = array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) a=array([[0,1,2],[3,4,5],[6,7,8]])
a [ : , 0 ] = [ 0 , 0 , 0 ] 视 图 赋 值 更 改 原 数 组 a[:,0] = [0,0,0]视图赋值更改原数组 a[:,0]=[0,0,0]
a r r a y ( [ [ 0 , 1 , 2 ] , [ 0 , 4 , 5 ] , [ 0 , 7 , 8 ] ] ) array([[0, 1, 2], [0, 4, 5], [0, 7, 8]]) array([[0,1,2],[0,4,5],[0,7,8]])

掩码操作

掩码,是一种高效的过滤数组,获取原始数组子集的处理方法

a = np.arange(9)
#选出a 中的偶数
mask = (a%2 == 0)

#根据掩码选出数据
a[mask]

#二维
a.shape = (3,3)
#二维掩码
mask = (a%2 ==0)
a[mask] #-->返回取出元素的一维数组

#也可以使用索引依次选择
a[[2,0,3,5,2,3,2,3,2,3]] #将索引为2,0,3,5的元素取出来

掩码、索引选出的数据,返回视图,可以通过操作视图更改原数组

猜你喜欢

转载自blog.csdn.net/weixin_45228198/article/details/114384624