Объединяйте объекты в массив и добавляйте значения. JavaScript / node.js

Я понял ответ на этот вопрос, используя FunctionTransformer , вдохновленный решением @Marcus V на этот вопрос . Пересмотренный трубопровод намного более краткий.

from sklearn.preprocessing import FunctionTransformer

get_numeric_data = FunctionTransformer(lambda x: x[['t1_prob', 't2_prob', 't3_prob', 't4_prob', 't5_prob']], validate=False)

pipeline = Pipeline([
    ('features', FeatureUnion([
            ('numeric_features', Pipeline([
                ('selector', get_numeric_data)
            ])),
             ('word_features', Pipeline([
                ('vect', CountVectorizer(analyzer="word", stop_words='english')), 
                ('tfidf', TfidfTransformer(use_idf = True)),
            ])),
         ])),
           ('clf', OneVsRestClassifier(svm.LinearSVC(random_state=random_state))) 
     ])

-2
задан Lukasz Dabrowski 19 January 2019 в 00:50
поделиться

3 ответа

уменьшить ваш друг

const list = [ { JavaScript: 41837, Batchfile: 47 },
  { 'C#': 7484 },
  { Batchfile: 110 },
  { Scala: 50597 },
  { Java: 18180 },
  { Java: 55689 } ];
const summed = list.reduce((totals, obj) => {
  Object.keys(obj).forEach(k => {
    const cur = totals[k] || 0;
    totals[k] = cur + obj[k];
  });
  return totals;
}, {});
   console.log(summed);

0
ответ дан James 19 January 2019 в 00:50
поделиться

Сделайте новый объект. Итерация по каждому объекту во входном массиве. Для каждого объекта итерируйте ключи этого объекта. Если они существуют в вашем новом объекте, добавьте значение, в противном случае добавьте ключ и значение в новый объект;

var arr = [ { JavaScript: 41837, Batchfile: 47 },
  { 'C#': 7484 },
  { Batchfile: 110 },
  { Scala: 50597 },
  { Java: 18180 },
  { Java: 55689 } ]
  
var result = {}

arr.forEach(function(group){
  Object.keys(group).forEach(function(key){
    if(result[key]) {
      result[key] += group[key];
    } else {
      result[key] = group[key];
    }
  })
});

console.log(result);

0
ответ дан connexo 19 January 2019 в 00:50
поделиться

Уменьшение массива в сочетании с For in для циклического перебора ключей объектов в них получит то, что вы хотите.

a = [ { JavaScript: 41837, Batchfile: 47 },
  { 'C#': 7484 },
  { Batchfile: 110 },
  { Scala: 50597 },
  { Java: 18180 },
  { Java: 55689 } ]

  result = {}

  b = a.reduce((result, item) => {
    for (let eachKey in item) {
      const curSum = result[eachKey] || 0;;
      result[eachKey] = curSum + item[eachKey];
    }
    return result;
  }, result)
0
ответ дан Gowri 19 January 2019 в 00:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: