【问题标题】:Why is this Python array not slicing?为什么这个 Python 数组不切片?
【发布时间】:2020-02-06 15:48:44
【问题描述】:

初始数据为:

array([[0.0417634 ],
   [0.04493844],
   [0.04932728],
   [0.04601787],
   [0.04511007],
   [0.04312284],
   [0.0451733 ],
   [0.04560687],
   [0.04263394],
   [0.04183227],
   [0.048634  ],
   [0.05198746],
   [0.05615724],
   [0.05787913], dtype=float32)

然后我将其转换为二维数组

array2d = np.reshape(dataset, (-1, 2))

现在我有

array([[0.0417634 , 0.04493844],
   [0.04932728, 0.04601787],
   [0.04511007, 0.04312284],
   [0.0451733 , 0.04560687],
   [0.04263394, 0.04183227],
   [0.048634  , 0.05198746],
   [0.05615724, 0.05787913],
   [0.05989346, 0.0605077 ], dtype=float32)

现在我要计算数组每个元素之间的平均值

paa = []
paa.append(array2d.mean(axis=1))

现在我想要这个列表中的间隔列表

intervals = paa[::10]
intervals

但结果是相同的列表 (paa)。为什么?已经尝试在 np.array(paa) 中转换它

需要一个包含更少元素的新列表。由于 10 是我期望的步骤的 nr [0.0417634, ... paa[11], .... paa[21] .... ]

【问题讨论】:

  • 你希望paa[::10] 做什么,确切地说?
  • 请包括您的预期输出
  • 预计会有一个包含更少元素的新列表。由于 10 是我期待的步骤的 nr [0.0417634, ... paa[11], .... paa[21] .... ] @GPhilo
  • 在这种情况下,paa[0] array2d.mean(axis=1)。也许你的意思是paa = array2d.mean(axis=1).tolist()(虽然有比通过列表更好的方法来做到这一点)

标签: python list numpy slice intervals


【解决方案1】:

np.mean 将返回一个np.array。您正在获取结果并将其附加到list。切片时,您将在paa 中获得0th(也是唯一的)元素,这是一个完整的np.array

去掉list,直接追加和切片到mean的结果中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    • 2015-08-22
    • 2019-12-29
    • 1970-01-01
    • 2018-01-15
    相关资源
    最近更新 更多