【问题标题】:every element is 1x1 matrix in python, How do i make it so that every element is not seperate?在 python 中,每个元素都是 1x1 矩阵,我如何使每个元素都不分开?
【发布时间】:2021-09-17 05:58:05
【问题描述】:

print(s0[3][0][0]) 给我 1

但是 print(s0[3][0]) 给了我 [1]

我怎样才能让 print(s0[3][0]) 给我 1?

S0 是一个 100 行的 numpy 矩阵

S0 = 
[[[ 1.        ]
  [-0.91903376]
  [ 0.18724527]]

 [[ 1.        ]
  [ 0.87834638]
  [-0.88794145]]

 [[ 1.        ]
  [-0.75320818]
  [ 0.59000726]]]

小样本^

【问题讨论】:

  • 你有一个 3 维矩阵,你想要一个 2 维矩阵吗?删除内括号并在数字之间插入逗号,即S0 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
  • s0[3,0,0] 从 3d 数组中选择一个元素。看起来你有一个 (3,3,1) 形状的数组。你读过shapereshape吗?

标签: python numpy machine-learning


【解决方案1】:

花点时间阅读numpy 基础知识。这里的关键是shape。你有一个 3d 数组:

In [122]: arr = np.arange(9).reshape(3,3,1)
In [123]: arr
Out[123]: 
array([[[0],
        [1],
        [2]],

       [[3],
        [4],
        [5]],

       [[6],
        [7],
        [8]]])
In [124]: arr.shape
Out[124]: (3, 3, 1)

您可以使用索引这样的数组

In [125]: arr[:,:,0]
Out[125]: 
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
In [126]: _.shape
Out[126]: (3, 3)

arr[0][0][0] 有效,但arr[0,0,0] 更清晰。

您还可以使用 reshape 从中获取二维数组(请注意,我使用 reshape 从一维 arange 数组创建原始数组。

In [127]: arr.reshape(3,3)
Out[127]: 
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

带有所有 [] 和逗号的显示(和输入)非常适合查看数组,但是您越早熟悉 shape(和 reshape),您的 numpy 编码就会更容易。

【讨论】:

  • 感谢您的建议!不了解基本情况
【解决方案2】:

如上所述,数组 S0 是一个 3-d 数组。要从这个 3-d 数组中获取一个值,您需要具有三个索引。为了使用两个索引 (S0[i][j]) 获取值,您必须将其转换为二维数组。

例如-

S1 =[[1.0, -0.91903376, 0.18724527],
[1.0, 0.87834638, -0.88794145],
[1.0, -0.75320818, 0.59000726]]

S1[0][0] 现在将给出 1.0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多