数组的维度
改变原数组
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的元素取出来
掩码、索引选出的数据,返回视图,可以通过操作视图更改原数组