python - 从 3D 数组中提取第 n 个值
问题描述
假设我有一个 3D 数组,例如:
>>> arr = numpy.arange(36).reshape(3, 4, 3)
>>> arr
array([[[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]],
[[12, 13, 14],
[15, 16, 17],
[18, 19, 20],
[21, 22, 23]],
[[24, 25, 26],
[27, 28, 29],
[30, 31, 32],
[33, 34, 35]]])
如何从每个最里面的行中提取第n个值?
如果我要取索引 1 的值,如何提取以下内容?
array([[ 1, 4, 7, 10],
[13, 16, 19, 22],
[25, 28, 31, 34]])
或者
array([ 1, 4, 7, 10, 13, 16, 19, 22, 25, 28, 31, 34])
解决方案
您可以使用最后一个索引访问:
import numpy
arr = numpy.arange(36).reshape(3, 4, 3)
print(arr[:, :, 1])
输出
[[ 1 4 7 10]
[13 16 19 22]
[25 28 31 34]]
或者,
print(arr[:, :, 1].flatten())
输出
[ 1 4 7 10 13 16 19 22 25 28 31 34]
您可以在此处找到有关 numpy 索引的更多信息。
更新
正如@MadPhysicist 在评论中提到的,您可以使用ravel代替flatten,主要区别在于flatten 返回一个副本,而ravel 返回一个视图。您也可以使用 anarr[..., 1]
来访问最后一个索引,称为省略号。从文档中:
省略号扩展到 : 对象的数量,以创建与 x.ndim 长度相同的选择元组
更远
推荐阅读
- python - 在我的设备上获取 Mozilla 的版本并与最新版本进行比较。蟒蛇,视窗
- vb.net - 从 UInt32 转换为 Int32 时保持位
- javascript - 如何将参数传递给通过单击元素打开的仪表板
- rest - 基于事件的微服务:带有代理的 MQTT 还是带有 API GATEWAY 的 HTTP?
- python - 为什么在 Python 中使用子进程调用“ssh -f -N 主机名”时 PID 会发生变化,以及如何在程序结束时可靠地终止它?
- c - 使用正则表达式从字符串中提取数字
- ios - 寻找 iOS 应用程序的“条款和协议”许可对话框/屏幕
- amazon-web-services - 如何将亚马逊颁发的证书从一个区域复制到另一个区域
- python - tkinter 中的动态 OptionMenu 或其他选项
- javascript - 当它们的高度由它们的内容定义时,如何确保两个元素在所有屏幕宽度上具有相同的高度?