栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

零基础学python(1/7)|numpy|数组基本操作(有更新)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

零基础学python(1/7)|numpy|数组基本操作(有更新)

Numpy/数组/基本操作
  • 创建数据
  • 数据变化
  • 获取数组信息

创建数据
⭕创建数据: 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)

以上!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1000978.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号