【问题标题】:How to Print a specific column in a 3D Matrix using numpy Python如何使用 numpy Python 打印 3D 矩阵中的特定列
【发布时间】:2016-09-02 23:49:24
【问题描述】:

我在打印 numpy 3D 矩阵中的列时遇到问题。 这是问题的简化版本:

import numpy as np
Matrix = np.zeros(((10,9,3))) # Creates a 10 x 9 x 3 3D matrix
Matrix[2][2][6] = 578
# I want to print Matrix[2][x][6] for x in range(9)
# the purpose of this is that I want to get all the Values in Matrix[2][x][6]

如果你们能帮助我,不胜感激。 提前致谢。

【问题讨论】:

  • Matrix[2][2][6] = 578 给出IndexError,因为您的最后一个维度对于索引6 来说不够大。这将工作Matrix[6][2][2] = 578

标签: python numpy matrix multidimensional-array


【解决方案1】:

切片会起作用:

a = np.zeros((10, 9, 3))
a[6, 2, 2] = 578
for x in a[6, :, 2]:
    print(x)

输出:

0.0
0.0
578.0
0.0
0.0
0.0
0.0
0.0
0.0

【讨论】:

  • 非常感谢迈克 :)
【解决方案2】:

不确定这是否是您想要的。这是演示:

In [1]: x = np.random.randint(0, 20, size=(4, 5, 3))

In [2]: x
Out[2]: 
array([[[ 5, 13,  9],
        [ 8, 16,  5],
        [15, 17,  1],
        [ 6, 14,  5],
        [11, 13,  9]],

       [[ 5,  8,  0],
        [ 8, 15,  5],
        [ 9,  2, 13],
        [18,  4, 14],
        [ 8,  3, 13]],

       [[ 3,  7,  4],
        [15, 11,  6],
        [ 7,  8, 14],
        [12,  8, 18],
        [ 4,  2,  8]],

       [[10,  1, 16],
        [ 5,  2,  1],
        [11, 12, 13],
        [11,  9,  1],
        [14,  5,  1]]])

In [4]: x[:, 2, :]
Out[4]: 
array([[15, 17,  1],
       [ 9,  2, 13],
       [ 7,  8, 14],
       [11, 12, 13]])

【讨论】:

  • 非常感谢 sudipta 的努力,正如 yasser 指出的那样,它非常简单,因为 matrix[:,:,1] 有点棘手,不是吗 :) 再次感谢。
【解决方案3】:

不确定 Numpy 是否支持这一点,但您可以通过这种方式使用普通列表:

如果您有三个列表 a = [1,2,3]b = [4,5,6]c = [7,8,9],则可以通过以下方式获得第二维 [2,5,8]

list(zip(a,b,c))[1]

编辑:

事实证明这在 Numpy 中非常简单。根据this thread,您可以这样做:

Matrix[:,1]

【讨论】:

  • 非常感谢 Yasser 你让我很开心:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-02
相关资源
最近更新 更多