- 创建数据
- 数据变化
- 获取数组信息
⭕创建数据: np.array() ⭕查看数据维度: array.ndim
例1:创建一维数据books1=[1,2,3,4],并查看data0的数据维度。
import numpy as np
books1=np.array([1,2,3,4])
print("data:",books1,"ndimension:",books1.ndim)
输出结果如下:
例2:创建一组二维数据,并查看数据维度
import numpy as np
books3=np.array([
[1,2,3,4],
[5,6,7,8],
[9,10,11,12]
])
#注意[]的用法和嵌套
print('data:',books3,'ndimension:',books3.ndim)
输出结果如下:
如此类推,可创建多维数据,注意弄清楚[]的用法。
⭕拓展维度:np.expand_dims() 或 np.newaxis ⭕删除维度:np.squeeze() ⭕合并数据:np.concatenate() 拆解数据: ⭕横拆:np.vspilt() ⭕竖拆:np.hsplit() ⭕列合并:np.column_stack() ⭕行合并:np.row_stack() ⭕垂直合并:np.vstack() ⭕水平合并:np.hstack() ⭕改变数据结构:np.reshape()
例1:简单合并books1和books2=[5,6,7,8]
books=np.concatenate([books1,books2]) print(books)
输出结果如下:
可以看到同样大小的一维数组简单合并起来依然是一维数组。
那么,如果想合并成二维数组,则需要拓展维度。
例2:合并books1,books2,合并后变成二维数据
#step1:把两组数据都变成二维的 #以下两种方法都可以加维度 books1_expand=np.expand_dims(books1,0) books2_expand=books2[np.newsaxis,:] #step2:重复例1,合并数据 all_books=np.concatenate([books1_expand,books2_expand])
当然,合并数据还可以有,保持列维度或行维度不变即垂直合并或水平合并。
print('保持列维度不变:',np.concatenate([all_books,all_books],axis=0))
print('保持行维度不变:',np.concatenate([all_books,all_books],axis=1))
print('垂直合并:',np.vstack([all_books,all_books]))
print('水平合并:',np.hstack(all_books,all_books))
也可以直接列合并或行合并
d = np.array([1,2,3,4,5,6])
e = np.array([11,22,33,44,55,66])
de_stack = np.column_stack([d, e])
print("列合并:",de_stack)
de_rstack=np.row_stack([d,e])
print("行合并:",de_rstack)
维度可以添加,自然也可以删除。删除维度有两种方法。
一种是np.squeeze()
一种是array_expand.squeeze(axis=1)
books2_squeeze=np.squeeze(books2_expand) books2_squeeze_axis=books2_expand.squeeze(axis=1) print(books2_squeeze.shape) print(books2_squeeze_axis.shape)
数据可以合并,自然也可以拆分。拆分数据分为两种:
一种是横着拆分,np.hsplit()
一种是竖着拆分,np.vsplit()
当然,还可以自定义拆分,np.split(,axis=0/1)
具体看下面例子:
d = np.array([
[1,2,3,4],
[8,4,5,4],
[6,7,8,9],
[10,11,12,13]
])
print("vsplit:",np.vsplit(d, indices_or_sections=2))#分成两段
print("vsplit2:",np.vsplit(d, indices_or_sections=[2,3]))#分成 [:2],[2:3],[3:]
print("hsplit:",np.hsplit(d, indices_or_sections=2))
print("hsplit2:",np.hsplit(d, indices_or_sections=[2,3]))
print("diy_split:",np.split(d,indices_or_sections=2,axis=0))#横着分成两段
print("diy_split2:",np.split(d,indices_or_sections=[2,3],axis=1))#竖着切分
运行后会发现,diy_split的结果与hsplit一致。diy_split2的结果与vsplit2一致。
若要改变数据结构 ,比如排队时排成一队或排成多条队,就要使用np.reshape()函数。
a=np.array([1,2,3,4,5,6])
a1=a.reshape([2,3])#创建一个2维数组,2行3列
a2=a.reshape([3,1,2])#创建一个3维1X2的数组
print("a1 shape:",a1.shape)
print(a1)
print("a2 shape:",a2.shape)
print(a2)
获取数组信息
⭕数组总个数:array.size() ⭕数组行维度:array.shape[0] #即做了几次测试 ⭕数组列维度:array.shape[1] #即有多少对象参与测试
print('共有多少数据:',books3.size)
print('第一维度是:',books3.shape[0])
print('第二维度是:',books3.shape[1])
print('总维度是:',books3.shape)
以上!



