当前位置: 首页 > news >正文

6、Numpy形状操纵

目录

1. 使用 reshape 改变形状

2. 使用 resize 改变大小和形状

3. 使用 ravel 或 flatten 展平数组

4. 使用 -1 推断尺寸

5. 使用 newaxis 增加维度

6. 使用 squeeze 移除单维度条目


1. 使用 reshape 改变形状

对于任何 NumPy 数组,你可以使用 reshape 方法来改变其形状,而不改变数据本身。

import numpy as np # 创建一个一维数组 
arr = np.arange(6) 
print("Original array:", arr) # 使用 reshape 改变数组形状 
reshaped_arr = arr.reshape((2, 3)) 
print("Reshaped array:\n", reshaped_arr)

上述代码将一个包含六个元素的一维数组转换成了一个 2x3 的二维数组:

Original array: [0 1 2 3 4 5]
Reshaped array:[[0 1 2][3 4 5]]

2. 使用 resize 改变大小和形状

resize 方法类似于 reshape,但它可以改变数组的大小。如果新大小大于原始大小,resize 会重复数组中的数据以填充新数组。

# 创建一个一维数组 
arr = np.array([1, 2, 3]) # 使用 resize 改变大小和形状 
np.resize(arr, (2, 3))

这将创建一个新的 2x3 数组,其中原始数组的元素被复制以填充新数组。

3. 使用 ravel 或 flatten 展平数组

ravelflatten 方法将多维数组转换为一维数组。flatten 总是返回一个新的数组,而 ravel 返回一个数组视图,如果可能的话。

# 创建一个二维数组 
arr = np.array([[1, 2, 3], [4, 5, 6]]) # 使用 ravel 展平数组 
flat_arr = arr.ravel() 
print("Flattened array with ravel:", flat_arr) # 使用 flatten 展平数组 
flat_arr2 = arr.flatten() 
print("Flattened array with flatten:", flat_arr2)

结果:

Flattened array with ravel: [1 2 3 4 5 6]
Flattened array with flatten: [1 2 3 4 5 6]

 

4. 使用 -1 推断尺寸

在重塑数组时,你可以在一个维度上使用 -1,让 NumPy 自动计算这个维度的大小。

# 创建一个一维数组 
arr = np.arange(12) # 使用 reshape 时在一个维度上使用 -1 
reshaped_arr = arr.reshape((3, -1)) 
print("Reshaped array with -1:\n", reshaped_arr)

上述代码会创建一个 3x4 的二维数组,因为 -1 会被解释为 4 来匹配原始数组的总大小。结果:

Reshaped array with -1:[[ 0  1  2  3][ 4  5  6  7][ 8  9 10 11]]

5. 使用 newaxis 增加维度

使用 np.newaxis 可以在数组中增加一个新的轴,也就是增加一个维度。

# 创建一个一维数组 
arr = np.array([1, 2, 3]) # 使用 newaxis 增加一个新的维度 
column_arr = arr[:, np.newaxis] 
print("Column array with newaxis:\n", column_arr) # 或者,将其变为行向量 
row_arr = arr[np.newaxis, :] 
print("Row array with newaxis:\n", row_arr)

这种技术常用于将一维数组转换为列向量或行向量,以符合某些算法的输入要求。结果:

Column array with newaxis:[[1][2][3]]
Row array with newaxis:[[1 2 3]]

6. 使用 squeeze 移除单维度条目

squeeze 方法用于从数组的形状中去除单维度的条目,即那些大小为 1 的维度。

# 创建一个具有单一维度的数组 
arr = np.array([[[1], [2], [3]]]) 
print("Original array shape:", arr.shape) 
# 使用 squeeze 移除单维度条目 
squeezed_arr = arr.squeeze() 
print("Squeezed array shape:", squeezed_arr.shape)
print("Squeezed array:", squeezed_arr)

在上述代码中,我们将一个 1x3x1 的三维数组压缩成了一个 3x1 的二维数组。结果:

Original array shape: (1, 3, 1)
Squeezed array shape: (3,)
Squeezed array: [1 2 3]

http://www.lryc.cn/news/284025.html

相关文章:

  • C++初阶类与对象(二):详解构造函数和析构函数
  • 【Vue3】3-3 : 组件之间是如何进行互相通信的
  • 网络端口映射和端口转发的区别和联系
  • VLSI超大规模集成电路设计复习
  • GCC 内联汇编
  • springboot整合websocket后启动报错:javax.websocket.server.ServerContainer not available
  • Vue面试之生命周期(上篇)
  • Gin 框架之用户密码加密
  • 【创作活动】ChatGPT 和文心一言哪个更好用?
  • 【linux】查看Debian应用程序图标对应的可执行命令
  • TortoiseSVN客户端如何安装配置并实现公网访问服务端提交文件到本地服务器
  • 【AUTOSAR】RTE 接口类型、应用场景差别及实例讲解
  • Qt应用开发(安卓篇)——Hello Qt On Android
  • 第十三讲_css 伸缩盒模型flex
  • 【C++干货铺】C++11常用新特性 | 列表初始化 | STL中的变化
  • k8s的对外服务---ingress
  • element-ui的el-upload组件实现上传拖拽排序图片顺序(sortablejs)
  • 【PS】PS设计图欣赏、学习、借鉴
  • 游戏云化好吗?游戏云化会带来什么?
  • 制造业企业数字化转型难点剖析及解决之法
  • golang 服务端遇到strict-origin-when-cross-origin,解决跨域整理
  • 分布式事务Seata实战-AT模式(注册中心为Eureka)
  • windows vscode jsoncpp cmake c++ 构建项目
  • 按照一定规则批量修改文件夹内文件的名称
  • Git项目分支管理规范
  • ycsb压测mongodb
  • 【zip密码】Zip压缩包删除密码方法,有哪些?
  • 代码随想录算法训练营day24 || 回溯法原理讲解,77.组合
  • RPA与通知机器人的完美结合
  • openssl3.2 - 官方demo学习 - signature - rsa_pss_direct.c