【问题标题】:why a[:,[x]] could create a column vector from an array?为什么 a[:,[x]] 可以从数组创建列向量?
【发布时间】:2020-07-25 02:05:30
【问题描述】:

为什么 a[:,[x]] 可以从数组创建列向量? [ ] 代表什么? 谁能给我解释一下原理?

a = np.random.randn(5,6)
a = a.astype(np.float32)
print(a)
c = torch.from_numpy(a[:,[1]])
[[-1.6919796   0.3160475   0.7606999   0.16881375  1.325092    0.71536326]
 [ 1.217861    0.35804042  0.0285245   0.7097111  -2.1760604   0.992101  ]
 [-1.6351479   0.6607222   0.9375339   0.5308735  -1.9699149  -2.002803  ]
 [-1.1895325   1.1744579  -0.5980689  -0.8906375  -0.00494479  0.51751447]
 [-1.7642071   0.4681248   1.3938268  -0.7519176   0.5987852  -0.5138923 ]]
###########################################
tensor([[0.3160],
        [0.3580],
        [0.6607],
        [1.1745],
        [0.4681]])

【问题讨论】:

  • advanced indexing。您正在使用一个序列对象(在本例中为列表 [1]),它使高级索引规则适用。
  • [1] 是一个包含 1 个元素的列表!不要跳过基本的 Python 学习。你从 (5,6) 开始,得到一个 (5,1) 数组,其中1 是索引列表的长度。

标签: python numpy pytorch tensor


【解决方案1】:

[ ] 表示您提供了额外的维度。试试 numpy shape 方法看看有什么区别。

a[:,1].shape

输出:

(10,)

带 [ ]

a[:,[1]].shape

输出:

(10,1)

【讨论】:

    【解决方案2】:

    该语法用于 numpy 中的数组切片,其中数组的索引为 a[rows, columns, page, ... (higher-dimensions)]

    选择特定的行/列/页是通过给出特定的数字或数字范围来完成的。所以当你使用a[1,2] 时,numpy 会从第 1 行第 2 列获取元素。

    您可以通过为维度指定多个值来选择多个特定索引。所以a[[1,3],1] 得到了两个元素 (1,1) 和 (1,3)。

    : 告诉 numpy 从特定的数组维度获取所有内容。因此,当您使用a[:,1] 时,numpy 会获取第 1 列中的每一行。或者,a[1,:] 会获取第 1 行中的每一列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-31
      • 2019-08-13
      • 2017-12-23
      • 1970-01-01
      相关资源
      最近更新 更多