当前位置:网站首页>浅谈Numpy中的shape、reshape函数的区别
浅谈Numpy中的shape、reshape函数的区别
2022-08-09 19:54:00 【nginx】
读取矩阵的长度,比如shape[0]就是读取矩阵第一维度的长度,相当于行数。它的输入参数可以是一个整数表示维度,也可以是一个矩阵。shape函数返回的是一个元组tuple,表示数组(矩阵)的维度/ 形状,例子如下:
- w.shape[0]返回的是w的行数
- w.shape[1]返回的是w的列数
- df.shape():查看行数和列数1. 数组(矩阵)只有一个维度时,shape只有shape[0],返回的是该一维数组(矩阵)中元素的个数,通俗点说就是返回列数,因为一维数组只有一行,一维情况中array创建的可以看做list(或一维数组),创建时用()和[ ]都可以,多维就使用[ ]
2.数组有两个维度(即行和列)时,a.shape返回的元组表示该数组的行数与列数
>>> a=np.array([1,2])>>> a
array([1, 2])
>>> a.shape
(2L,)
>>> a.shape[0]
2L
>>> a.shape[1]
IndexError: tuple index out of range #最后报错是因为一维数组只有一个维度,可以用a.shape或a.shape[0]来访问
#这个使用的是两个()包裹,得到的数组和前面的一样
>>> a=np.array((1,2))
>>> a
array([1, 2])
总结:使用np.array()创建数组时,
#注意二维数组要用()和[]一起包裹起来,键入print a 会得到一个用2个[]包裹的数组(矩阵)>>> b=np.array([[1,2,3],[4,5,6]])
>>> b
array([[1, 2, 3],
[4, 5, 6]])
>>> b.shape
(2L, 3L)
一维的可以直接np.array([1,2,3])或者np.array((1,2,3))
二维的要使用np.array([[1,2,3],[1,2,3]]),用一个()和一个[]把要输入的list包裹起来
三维的要使用np.array([[[1,2,3],[1,2,3]]]),用一个()和两个[]把要输入的list包裹起来
返回的元组表示3个维度各包含的元素的个数。所谓元素,在一维时就是元素的个数,二维时表示行数和列数,三维时a.shape【0】表示创建的块数,a.shape【1】和a.shape【2】表示每一块(每一块都是二维的)的行数和列数。
>>> a=np.array([[[1,2],[3,4]]])>>> a
array([[[1, 2],
[3, 4]]])
>>> a.shape
(1L, 2L, 2L)
2 reshape()函数改变数组的形状,并且原始数据不发生变化。但是,reshape()函数中的参数需要满足乘积等于数组中数据总数.
>>> a=np.ones([2,2,3])#创建两个2行3列的数组(矩阵)>>> a
array([[[ 1., 1., 1.],
[ 1., 1., 1.]],
[[ 1., 1., 1.],
[ 1., 1., 1.]]])
如:当我们将8个数使用(2,3)重新排列时, python会报错
而且,reshape()函数得出的数组与原数组使用的是同一个存储空间,改变一个,另一个也随之改变。
import numpy as npa=np.array([1,2,3,4])
b=np.array([[1,2,3,4],[4,5,6,7],[7,8,9,1]])
print("a:\n",a)
print("b:\n",b)
print(b.dtype)
a_r=a.reshape((2,2))
print("a_r:\n",a_r)
d=a.reshape((-1,1))
print("d:\n",d)
e=a.reshape((1,-1))
print("e:\n",e)
#结果如下
a:
[1 2 3 4]
c:
[[1 2 3 4]
[4 5 6 7]
[7 8 9 1]]
int32
a_r:
[[1 2]
[3 4]]
d:
[[1]
[2]
[3]
[4]]
e:
[[1 2 3 4]]

【注意】shape和reshape()函数都是对于数组(array)进行操作的,对于list结构是不可以的

边栏推荐
- 安科瑞支持以太网通讯、profibus通讯嵌入式电能表APM指导性技术要求-Susie 周
- Overview of Security Analysis Technology for Smart Home Devices
- 继承关系下构造方法的访问特点
- What are the benefits of enterprise data integration?How do different industries solve the problem of data access?
- DSPE-PEG-Azide,DSPE-PEG-N3,磷脂-聚乙二醇-叠氮可和DBCO直接反应
- 渗透测试-对新型内存马webshell的研究
- Access control knowledge
- 小满nestjs(第三章 前置知识装饰器)
- Ankerui supports Ethernet communication, profibus communication embedded energy meter APM guiding technical requirements-Susie Week
- Js查找字符串中出现最多次数的字母和单词
猜你喜欢
【kali-权限提升】(4.2.6)社会工程学工具包(中):中间人攻击工具Ettercap
【kali-权限提升】(4.2.7)社会工程学工具包:权限维持创建后门、清除痕迹
source install/setup.bash时出现错误
Number of daffodils within a thousand
漏洞复现-redis未授权getshell
leetcode二叉搜索树与双向链表
DSPE-PEG-Azide, DSPE-PEG-N3, phospholipid-polyethylene glycol-azide can react directly with DBCO
一千以内的水仙花数
痛击面试官 CURD系统也能做出技术含量
Prometheus Operator 通过additional 添加target
随机推荐
力扣15-三数之和——HashSet&双指针法
【Efficient Tools】Remote Control Software ToDesk (Favorites)
人人都可以DIY的大玩具,宏光MINIEV GAMEBOY产品力强,出行新装备
【kali-密码攻击】(5.1.1)密码在线破解:Hydra(图形界面)
【kali-权限提升】(4.2.6)社会工程学工具包(中):中间人攻击工具Ettercap
DSPE-PEG-Silane, DSPE-PEG-SIL, phospholipid-polyethylene glycol-silane modified silica particles
看完这波 Android 面试题;助你斩获心中 offer
新出现的去中心化科学能够为科学领域带来什么?
6 g underwater channel modeling were summarized based on optical communication
小满nestjs(第六章 nestjs cli 常用命令)
【高效工具】远程控制软件 ToDesk(收藏夹)
What are the benefits of enterprise data integration?How do different industries solve the problem of data access?
没有 accept,我可以建立 TCP 连接吗?
小满nestjs(第三章 前置知识装饰器)
大健康产业商业供应链管理系统数字化提升产业链运作效率推动供应链标准化建设
Simulation of Water Temperature Control System Based on Fuzzy PID Controller
分数阶混沌系统李雅普指数和分岔图
蓝牙模块的分类和对应的属性特点
基于网络数据流的未知密码协议逆向分析
hdu 3341 Lost's revenge(dp+Ac自动机)