Numpy中的shape、reshape函数的区别

 更新时间:2022年07月24日 15:18:13   作者:wamg潇潇  
本文主要介绍了Numpy中的shape、reshape函数的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

 1 shape()函数 

读取矩阵的长度,比如shape[0]就是读取矩阵第一维度的长度,相当于行数。它的输入参数可以是一个整数表示维度,也可以是一个矩阵。shape函数返回的是一个元组tuple,表示数组(矩阵)的维度/ 形状,例子如下:

  • w.shape[0]返回的是w的行数
  • w.shape[1]返回的是w的列数
  • df.shape():查看行数和列数

1. 数组(矩阵)只有一个维度时,shape只有shape[0],返回的是该一维数组(矩阵)中元素的个数,通俗点说就是返回列数,因为一维数组只有一行,一维情况中array创建的可以看做list(或一维数组),创建时用()和[ ]都可以,多维就使用[ ]

>>> 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]) 

2.数组有两个维度(即行和列)时,a.shape返回的元组表示该数组的行数与列数

 #注意二维数组要用()和[]一起包裹起来,键入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()创建数组时,

一维的可以直接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包裹起来

>>> a=np.array([[[1,2],[3,4]]])
>>> a
array([[[1, 2],
        [3, 4]]])
>>> a.shape
(1L, 2L, 2L)

返回的元组表示3个维度各包含的元素的个数。所谓元素,在一维时就是元素的个数,二维时表示行数和列数,三维时a.shape【0】表示创建的块数,a.shape【1】和a.shape【2】表示每一块(每一块都是二维的)的行数和列数。

>>> a=np.ones([2,2,3])#创建两个2行3列的数组(矩阵)
>>> a
array([[[ 1.,  1.,  1.],
        [ 1.,  1.,  1.]],
 
       [[ 1.,  1.,  1.],
        [ 1.,  1.,  1.]]])

2 reshape()函数

 改变数组的形状,并且原始数据不发生变化。但是,reshape()函数中的参数需要满足乘积等于数组中数据总数.

如:当我们将8个数使用(2,3)重新排列时,python会报错

import numpy as np
 
a=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]]

而且,reshape()函数得出的数组与原数组使用的是同一个存储空间,改变一个,另一个也随之改变。

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

【参考】

Python:numpy中shape和reshape的用法 

到此这篇关于Numpy中的shape、reshape函数的区别的文章就介绍到这了,更多相关Numpy shape reshape内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于Python字符编码与二进制不得不说的一些事

    关于Python字符编码与二进制不得不说的一些事

    这篇文章主要给大家介绍了关于Python字符编码与二进制不得不说的一些事,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • numpy.array 操作使用简单总结

    numpy.array 操作使用简单总结

    这篇文章主要介绍了numpy.array 操作使用简单总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • 深度解析Django REST Framework 批量操作

    深度解析Django REST Framework 批量操作

    这篇文章主要介绍了深度解析Django REST Framework批量操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • python中的round()函数用法详解

    python中的round()函数用法详解

    这篇文章主要给大家介绍了关于python中round()函数用法的相关资料,round()函数是Python内置函数之一,用于对数字进行四舍五入操作,需要的朋友可以参考下
    2023-08-08
  • ansible作为python模块库使用的方法实例

    ansible作为python模块库使用的方法实例

    ansible是一个python package,是个完全的unpack and play软件,对客户端唯一的要求是有ssh有python,并且装了python-simplejson包,部署上简单到发指。下面这篇文章就给大家主要介绍了ansible作为python模块库使用的方法实例,需要的朋友可以参考借鉴。
    2017-01-01
  • Python数据结构与算法之算法分析详解

    Python数据结构与算法之算法分析详解

    算法分析的主要目标是从运行时间和内存空间消耗等方面比较算法。本文将为大家详细介绍Python数据结构与算法中的算法分析,需要的可以参考一下
    2021-12-12
  • 在Django中创建动态视图的教程

    在Django中创建动态视图的教程

    这篇文章主要介绍了在Django中创建动态视图的教程,Django是Python重多人气框架中最为著名的一个,需要的朋友可以参考下
    2015-07-07
  • 详解Python中键盘鼠标的相关操作

    详解Python中键盘鼠标的相关操作

    pyautogui模块,规范一点大写就是PyAutoGUI模块,是用来实现自动化脚本的一个十分得力的小助手。他可以操控键盘和鼠标,可以写许多工具。本文就来讲讲如何利用这个模块实现键盘鼠标的相关操作,需要的可以参考一下
    2023-01-01
  • python scipy.misc.imsave()函数的用法说明

    python scipy.misc.imsave()函数的用法说明

    这篇文章主要介绍了python scipy.misc.imsave()函数的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-05-05
  • python 获取字典键值对的实现

    python 获取字典键值对的实现

    这篇文章主要介绍了python 获取字典键值对的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11

最新评论