获取numpy数组中数组的索引

时间:2019-06-18 07:28:15

标签: python arrays numpy

我有一个频谱图。这是129行x n列。 我想将列“削减”到20。然后我会做类似的事情:

if spectrogram.shape[1] > 20:
                  for row in spectrogram:
                    i = spectrogram.index(row)
                    row = row[:20]
                    spectrogram[i] = row 

但是使用.index()会引发错误,因此我尝试在SOF上使用.where(),但是发生了另一个错误:

AttributeError: 'numpy.ndarray' object has no attribute 'where'

我应该怎么办?

1 个答案:

答案 0 :(得分:0)

您应该能够不带循环地获取所需的切片(每当您试图遍历numpy数组时,通常会有更好的方法)。

spectrogram[:, :20]

这是一个简化的示例:给定5x10数组,仅取每行的前5个给定5x5数组:

import numpy as np
a = np.arange(50).reshape(5, 10)
a[:, :5]

结果

array([
   [ 0,  1,  2,  3,  4],
   [10, 11, 12, 13, 14],
   [20, 21, 22, 23, 24],
   [30, 31, 32, 33, 34],
   [40, 41, 42, 43, 44]])