python - 使用列表中的值作为索引值来创建新的多维数组
问题描述
我这里有一个数组
A = np.array([[1,2,3],
[4,5,6],
[7,8,9]])
另一个数组表示 A 中的列索引值
Cols,rows = np.array([[0,1],[1,2]])
然后我想使用这些列值来索引数组 A 最终得到一个看起来像的数组
Cols_result = [[[1,2],[4,5],[7,8]],
[[2,3],[5,6],[8,9]]]
Row_results = [[[1,2,3],[4,5,6]],
[[4,5,6],[7,8,9]]]
我尝试使用np.take()
但只能让它正常工作索引行值而不是列值
解决方案
一种使用numpy.take
with 的方法numpy.swapaxes
:
A = np.array([[1,2,3],[4,5,6],[7,8,9]])
ind = np.array([[0,1],[1,2]])
行的输出:
np.take(A, ind, 0)
array([[[1, 2, 3],
[4, 5, 6]],
[[4, 5, 6],
[7, 8, 9]]])
列的输出:
np.swapaxes(np.take(A, ind, 1), 0, 1)
array([[[1, 2],
[4, 5],
[7, 8]],
[[2, 3],
[5, 6],
[8, 9]]])
推荐阅读
- svn - SVN Mergeinfo 存储在 WC 或服务器上
- ada - Ada 对象中的常量元素?
- reactjs - 在 html 中加载 10MB+ bundle.js 的最有效方法
- sql - 分组依据不包含数据时按列表显示数据
- c++ - 如何在 mfc 中设置大小和透明/清除 CMFCToolBar 按钮和图标?
- hybris - Hybris Init 只初始化暂存目录
- ubuntu - Ubuntu 16.04 - Vagrant Box 问题:ssh_exchange_identification:读取:连接由对等方重置
- jenkins - Sed 命令在 Jenkins 流水线中不起作用
- php - 为什么两个相似的 PHP 代码的输出之间存在差异
- unity3d - 使玩家角色的行为就像使用鼠标事件 Unity