numpy 辨异 一 —— reshape 与 resize

本文深入探讨了NumPy中reshape和resize函数的使用方法及其区别。详细解释了如何通过reshape改变数组形状而不修改原始数据,以及resize如何直接修改原始数组的形状。同时,文章还介绍了如何使用reshape来提升数组的维度。

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.youkuaiyun.com/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                       

0. reshape的参数

reshape的参数严格地说,应该是tuple类型(tuple of ints),似乎不是tuple也成(ints)。

>>> x = np.random.rand(2, 3)>>> x.reshape((3, 2))                                    # 以tuple of intsarray([[ 0.19399632,  0.33569667],       [ 0.36343308,  0.7068406 ],       [ 0.89809989,  0.7316493 ]])>>> x.reshape(3, 2)array([[ 0.19399632,  0.33569667],       [ 0.36343308,  0.7068406 ],       [ 0.89809989,  0.7316493 ]])
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

1. .reshape 实现维度的提升

(3, ) (3, 1):前者表示一维数组(无行和列的概念),后者则表示一个特殊的二维数组,也即是一个列向量;

>> x = np.ones(3)>> xarray([ 1.1.1.])>> x.reshape(3, 1)array([[ 1.],       [ 1.],       [ 1.]])>> x.reshape(1, 3)array([[ 1.,  1.,  1.]])
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

2. .reshape.resize

  • reshape:有返回值,所谓有返回值,即不对原始多维数组进行修改;
  • resize:无返回值,所谓有返回值,即会对原始多维数组进行修改;
>> X = np.random.randn(2, 3)>> Xarray([[ 1.23077478, -0.70550605, -0.37017735],       [-0.61543319,  1.1188644 , -1.05797142]])>> X.reshape((3, 2))array([[ 1.23077478, -0.70550605],       [-0.37017735, -0.61543319],       [ 1.1188644 , -1.05797142]])>> Xarray([[ 1.23077478, -0.70550605, -0.37017735],       [-0.61543319,  1.1188644 , -1.05797142]])>> X.resize((3, 2))>> Xarray([[ 1.23077478, -0.70550605],       [-0.37017735, -0.61543319],       [ 1.1188644 , -1.05797142]])
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
           

给我老师的人工智能教程打call!http://blog.youkuaiyun.com/jiangjunshow
这里写图片描述
numpy中的reshaperesize都可以用于改变数组的形状,但它们之间存在些差别。 1. reshape reshape方法可以在不改变数组元素的情况下改变数组的形状,返回个新的数组。其用法如下: ``` numpy.reshape(arr, newshape, order='C') ``` 其中,arr表示要改变形状的数组,newshape是个整数或者个整数元组,表示新的形状。order参数表示新数组的存储顺序,可以为'C'或'F'。 例如: ``` import numpy as np a = np.array([[1, 2, 3], [4, 5, 6]]) b = np.reshape(a, (3, 2)) print(a) print(b) ``` 输出为: ``` [[1 2 3] [4 5 6]] [[1 2] [3 4] [5 6]] ``` 2. resize resize方法可以改变数组的形状,并且可以改变数组元素的数量。如果新的形状比原来的形状大,那么新数组的某些元素将被重复。如果新的形状比原来的形状小,那么新数组的某些元素将被删除。其用法如下: ``` numpy.resize(arr, new_shape) ``` 其中,arr表示要改变形状的数组,new_shape是个整数元组,表示新的形状。 例如: ``` import numpy as np a = np.array([[1, 2, 3], [4, 5, 6]]) b = np.resize(a, (3, 2)) print(a) print(b) ``` 输出为: ``` [[1 2 3] [4 5 6]] [[1 2] [3 4] [5 6]] ``` 再例如: ``` import numpy as np a = np.array([[1, 2, 3], [4, 5, 6]]) b = np.resize(a, (3, 3)) print(a) print(b) ``` 输出为: ``` [[1 2 3] [4 5 6]] [[1 2 3] [4 5 6] [1 2 3]] ``` 可以看到,当新形状比原来的形状大时,resize方法会重复原数组的元素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值