Вы также можете использовать метод фильтра SciPy, потому что EMA является IIR-фильтром. Это будет иметь преимущество примерно в 64 раза быстрее, чем измерено в моей системе, используя timeit для больших наборов данных по сравнению с подходом enumerate () .
import numpy as np
from scipy.signal import lfilter
x = np.random.normal(size=1234)
alpha = .1 # smoothing coefficient
zi = [x[0]] # seed the filter state with first value
# filter can process blocks of continuous data if <zi> is maintained
y, zi = lfilter([1.-alpha], [1., -alpha], x, zi=zi)
Используйте: Object.values()
, мы передаем объект в качестве аргумента и получаем массив значений в качестве возвращаемого значения.
Это возвращает массив данного объекта с собственными перечисляемыми значениями свойств. Вы получите те же значения, что и при использовании цикла for in
, но без свойств в прототипе. Этот пример, вероятно, прояснит ситуацию:
function person (name) {
this.name = name;
}
person.prototype.age = 5;
let dude = new person('dude');
for(let prop in dude) {
console.log(dude[prop]); // for in still shows age because this is on the prototype
} // we can use hasOwnProperty but this is not very elegant
// ES6 +
console.log(Object.values(dude));
// very concise and we don't show props on prototype
ES5 Object.keys
var a = { a: 1, b: 2, c: 3 };
Object.keys(a).map(function(key){ return a[key] });
// result: [1,2,3]
const object1 = {
a: 'somestring',
b: 42
};
for (let [key, value] of Object.entries(object1)) {
console.log(`${key}: ${value}`);
}
// expected output:
// "a: somestring"
// "b: 42"
// order is not guaranteed
const myObj = { a:1, b:2, c:3 }
Получают все значения:
самый короткий путь:
const myValues = Object.values(myObj)
const myValues = Object.keys(myObj).map(key => myObj[key])