numpy.reshape()方法详解

二维数组

1. 定义

由多个一维列表一行一行堆叠形成二维。(这些一维数组必须相同长度的)

#创建一个二维数组。(体会堆叠的过程)
import numpy as np
a = [1, 2, 3] ; b = [4, 5, 6]; c = [7, 8, 9] #三个一维数组
w1 = np.array( [a,b,c] )  # 多个一维数组,一行一行堆叠,形成二维数组
print(w1)

# 结果:
[[1 2 3]
 [4 5 6]
 [7 8 9]]

2. 二维数组的变形

np.reshape(array,(x,y)) 
参数含义
array需要变形的数组
x变形后的行数
y变形后的列数

注意:形状变化是基于数组元素不能改变的,变成的新形状中所包含的元素个数必须符合原来元素个数。如果新数组元素发生变化的时候,就会报错
在这里插入图片描述

三维数组及以上

1. 定义

多个二维构成三维,以此类推可得更高维矩阵(一般3维以上就不用numpy.array()这种方法创建了)。
在这里插入图片描述

#%% ---------------------------------------------创建三维数组的例子1:(2,3,3)
import numpy as np
a = [1, 2, 3] ; b = [4, 5, 6]; c = [7, 8, 9]

# 多个一维数组,一行一行堆叠形成一个二维数组(3x3)
# 两个二维数组,构成三维数组(2x3x3)
# 最后再用一个 [] 把整体括起来!
w2 = np.array( [ [a,b,c], [a,b,c] ] ) #将两个二维数组堆叠
print(w2)

# 结果:
[[[1 2 3]
  [4 5 6]
  [7 8 9]]

 [[1 2 3]
  [4 5 6]
  [7 8 9]]]

#%% ---------------------------------------------创建三维数组的例子2:(4,2,3)
import numpy as np
a = [1, 2, 3] ; b = [4, 5, 6]; c = [7, 8, 9]

# 每一页 / 每一个二维数组内容不同:
w3 = np.array( [ [a,b], [a,c], [b,c], [a,a] ] ) #将四个二维数组堆叠
print(w3)

# 结果:
[[[1 2 3]
  [4 5 6]]

 [[1 2 3]
  [7 8 9]]

 [[4 5 6]
  [7 8 9]]

 [[1 2 3]
  [1 2 3]]]

由创建三维例子的例子可以看出:np.array(n,x,y)

参数含义
n三维数组由n个二维数组组成
x二维数组的行数
y二维数组的列数

2. 三维数组的变形

np.reshape(array,(n,x,y)) 
参数含义
array需要变形的数组
n变形成多少个二维数组
x变形后的二维数组的行数
y变形后的二维数组的列数

3. 三维数组的赋值

data_array[1, 2, 2]=1 表示为第2个二维数组;二维数组的第3行第3列;(下标从0开始)

data_array[1, 2, 2]=1

print(data_array)
[[[0 0 0 0 0 0]
  [0 0 0 0 0 0]
  [0 0 0 0 0 0]
  [0 0 0 0 0 0]
  [0 0 0 0 0 0]]

 [[0 0 0 0 0 0]
  [0 0 0 0 0 0]
  [0 0 1 0 0 0]
  [0 0 0 0 0 0]
  [0 0 0 0 0 0]]

 [[0 0 0 0 0 0]
  [0 0 0 0 0 0]
  [0 0 0 0 0 0]
  [0 0 0 0 0 0]
  [0 0 0 0 0 0]]]

4. 识别数组维数的小技巧

最快验证自己创建的数组是否满足自己的维度需求的方式,就是看打印的结果中,最外面有几个 ] 中括号,有几个 ] 就是几维数组!如下图,打印结果最外层有3个 ],说明满足3维的要求。

# 创建一个全是0的三维数组
data_array = np.zeros((3, 5, 6), dtype=np.int) #创建3个二维数组,每个二维数组5维,6列
print(data_array)

#结果
[[[0 0 0 0 0 0]
  [0 0 0 0 0 0]
  [0 0 0 0 0 0]
  [0 0 0 0 0 0]
  [0 0 0 0 0 0]]

 [[0 0 0 0 0 0]
  [0 0 0 0 0 0]
  [0 0 0 0 0 0]
  [0 0 0 0 0 0]
  [0 0 0 0 0 0]]

 [[0 0 0 0 0 0]
  [0 0 0 0 0 0]
  [0 0 0 0 0 0]
  [0 0 0 0 0 0]
  [0 0 0 0 0 0]]]

在这里插入图片描述

参考文章

https://blog.csdn.net/qq_28618765/article/details/78083895
https://www.jianshu.com/p/6caf8215a5b1
https://blog.csdn.net/qq_34840129/article/details/86294530

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落樱缤纷的夏天

您的鼓励是我最大的动力!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值