Numpy中的shape、reshape函数的区别

目录

 1 shape()函数 

2 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内容请搜索易知道(ezd.cc)以前的文章或继续浏览下面的相关文章希望大家以后多多支持易知道(ezd.cc)!

推荐阅读

    python怎么用(python怎么用numpy)

    python怎么用(python怎么用numpy),有些用户想要学习Python语言却不知道该怎么下手,在完成了第一步的安装之后,就要来到打开使用的时候了,那

    pythonnumpy查询定位赋值数值所在行列

    pythonnumpy查询定位赋值数值所在行列目录根据条件筛选行(筛选)根据行列号取值(查询)根据值求行列号(定位)按行/列求和(求和)赋值根据条件筛选行

    python中numpy 常用操作总结

    python中numpy 常用操作总结前言:
    NumPy 是 Python 语言的一个扩充程序库,支持大量高维度数组与矩阵运算,此外也针对数组运算提供大量的数

    NumPy<br>Matplotlib

    NumPy<br>MatplotlibNumPy Matplotlib
    Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案

    NumPy<br>切片和索引

    NumPy<br>切片和索引NumPy 切片和索引
    ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样。
    ndarray

    使用numpy.ndarray添加元素

    使用numpy.ndarray添加元素目录numpy.ndarray添加元素Numpy:数组(Ndarray)之元素添加、删除和修改添加元素删除元素元素修改numpy.ndarr