Одна из ваших возможных проблем заключается в том, что, когда у вас есть следующая строка:
tmp_s = np.array; tmp_idx = np.array;
Вы устанавливаете tmp_s
и tmp_idx
для встроенной функции np.array.Затем, когда вы добавляете, у вас есть массивы типов объектов, с которыми np.interp
не знает, что делать.Я думаю, вы, вероятно, думали, что создавали пустые массивы нулевой длины, но это не то, как работает numpy или python.
Вместо этого попробуйте что-то вроде следующего:
class myClass
def myfunction(self, in_array, in_indeces = None):
if(in_indeces is None):
self.indeces = np.arange(len(in_array))
# NOTE: Use in_array.size or in_array.shape[0], etc instead of len()
else:
self.indeces = in_indeces
# clean data
# set ii to the indices of in_array that are neither nan or inf
ii = ~np.isnan(in_array) & ~np.isinf(in_array)
# assuming in_indeces and in_array are the same shape
tmp_s = in_array[ii]
tmp_idx = in_indeces[ii]
self.indeces = np.arange(tmp_idx.size)
self.samples = np.interp(self.indeces, tmp_idx, tmp_s)
Нет гарантийчто это будет работать отлично, так как я не знаю ваших входов или желаемых выходов, но это должно помочь вам начать.Как примечание, в numpy вам, как правило, не рекомендуется циклически проходить по элементам массива и работать с ними по одному, если есть метод, который выполняет нужную операцию над всем массивом.Использование встроенных методов numpy всегда намного быстрее.Определенно просмотрите numy документы, чтобы увидеть, какие методы доступны.Не следует обращаться с массивами numpy так же, как с обычным списком Python.