数组的形状操作

Numpy学习笔记006

八、数组的形状操作

1. reshaperesize
1.1 reshape方法

将数组转换成指定的形状,然后返回转换后的结果,对于原数组的形状是不会发生改变的。

ndarray.reshape((m,n,o))含义 :有三个参数,说明ndarray转换后是三维数组,第一个参数m表示的是三维数组中有m个元素,就是有m个二维数组,后两个参数 n,o 分别表示的二维数组的行数和列数。例如a.reshape((2,3,3))就是把a数组转换为一个由两个3X3的二维数组组成的三维数组。

import numpy as np
a1 = np.random.randint(1,10,size=(3,6))
print(a1)
print('-'* 20)
a2 = a1.reshape((2,9))  #修改后的数组数量要和原数组数量一致
print(a2)
print('-'* 20)
a3 = a1.reshape((3,3,2))  #变成一个3维数组,总共有3块(第一个参数决定),每一块是3行2列的(三维数组中数的数量要和一维数组中数的数量要一致)
print(a3)
print('-'* 20)
a4 = a1.reshape((2,3,3)) #变成一个3维数组,总共有2块,每一块是3行3列的
print(a4)
print('-'*20)
a5 = a1.reshape((3,2,3))  #变成一个3维数组,总共有3块,每一块是2行3列的
print(a5)
[[4 8 5 9 5 8]
 [9 7 2 2 6 9]
 [8 4 4 2 8 5]]
--------------------
[[4 8 5 9 5 8 9 7 2]
 [2 6 9 8 4 4 2 8 5]]
--------------------
[[[4 8]
  [5 9]
  [5 8]]

 [[9 7]
  [2 2]
  [6 9]]

 [[8 4]
  [4 2]
  [8 5]]]
--------------------
[[[4 8 5]
  [9 5 8]
  [9 7 2]]

 [[2 6 9]
  [8 4 4]
  [2 8 5]]]
--------------------
[[[4 8 5]
  [9 5 8]]

 [[9 7 2]
  [2 6 9]]

 [[8 4 4]
  [2 8 5]]]
1.2 resize方法

将数组转换成指定的形状,会直接修改数组本身,但不会返回任何值。

import numpy as np
b1 = np.random.randint(0,10,size=(3,4))
print(b1)
print("="*20)
b2 = b1.resize((2,6))
print(b2)   # None没有返回值
print("="*20)
print(b1)  # 打印已经改变的数组形状
[[4 4 3 7]
 [8 7 6 8]
 [5 2 6 9]]
====================
None
====================
[[4 4 3 7 8 7]
 [6 8 5 2 6 9]]
2. flattenravel
2.1 flatten方法

将数组转换为一维数组后,然后将这个拷贝返回回去,变量名和变量指向的存储位置都已经改变了,所以后续对这个返回值进行修改不会影响之前的数组。(深拷贝)

import numpy as np
c1 = np.random.randint(1,10,size=(3,3))
print(c1)
print('-'*20)
c2 = c1.flatten()
print(c2)     #一维数组
print('-'*20)
#对返回值c2进行修改,观察到c1未改变
c2[0] = 100
print
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值