【问题标题】:python:numpy array slicing of 1D arraypython:numpy 数组切片一维数组
【发布时间】:2020-06-08 15:35:55
【问题描述】:

我将一个数组初始化为 a=numpy.array([1,2,3])。 在运行语句 print(a[0,:]) 时,它显示一个错误。这种切片方法只适用于二维数组吗?

【问题讨论】:

  • 你有2个索引,你只需要一个,
  • 为什么你的索引中有逗号?你明白它的作用吗?
  • 上面的打印语句应该打印整个(第一)行......这个语句在二维数组中工作正常并打印第一行,但在一维数组中它给出了错误,有人可以解释一下
  • @AdnanZahid 正如我的回答中提到的,您的数组是形状 (3.),为了以您提到的方式寻址数组,您需要向量至少是二维的。因此,在您的情况下,最简单的方法是通过添加长度为 1 的新轴来制作二维数组。现在的问题是:a 是否应该是列向量,在这种情况下,第一行将只包含数字1。然后你需要a = a[:, np.newaxis],而不是我的答案,或者a 是一个行向量,那么第一行是完整的数组[1, 2, 3] 在这种情况下,我给出的答案就是你需要的答案
  • AFAIK using a[0:] 只是从第 0 个元素开始访问 a 的所有元素,因此它没有任何意义,因为它与仅使用 a 完全一样,没有任何索引。例如,如果你使用print(a[1:]),你应该得到[2, 3]作为结果

标签: python arrays numpy slice


【解决方案1】:

只需将“a[0,:]”替换为“a[0:]”即可。

import numpy as np

a = np.array([1, 2, 3])
print(a[0:])

【讨论】:

    【解决方案2】:

    你可以用

    解决这个问题
    a = a[np.newaxis, :]
    

    在打印之前,将其设置为 1 x 3 数组,而不是具有形状 (3,)。显然,这只有在您还需要其他多维数组的打印语句并希望使其以通用方式工作时才有意义。

    【讨论】:

      猜你喜欢
      • 2015-01-29
      • 1970-01-01
      • 2012-11-10
      • 2013-04-12
      • 2020-05-03
      • 2021-11-23
      • 2014-08-25
      • 1970-01-01
      相关资源
      最近更新 更多