Ext.define не работает в app.js (onReady)

Для полноты в numpy> = 1.8 вы также можете использовать метод np.add at:

In [8]: m, n = np.random.rand(2, 10)

In [9]: m_idx, n_idx = np.random.randint(10, size=(2, 20))

In [10]: m0 = m.copy()

In [11]: np.add.at(m, m_idx, n[n_idx])

In [13]: m0 += np.bincount(m_idx, weights=n[n_idx], minlength=len(m))

In [14]: np.allclose(m, m0)
Out[14]: True

In [15]: %timeit np.add.at(m, m_idx, n[n_idx])
100000 loops, best of 3: 9.49 us per loop

In [16]: %timeit np.bincount(m_idx, weights=n[n_idx], minlength=len(m))
1000000 loops, best of 3: 1.54 us per loop

. Помимо очевидного недостатка производительности, он имеет несколько преимуществ:

  1. np.bincount преобразует его веса в плавающие значения с двойной точностью, .at будет работать с вашим родным типом массива. Это делает его самым простым вариантом для решения, например. с комплексными числами.
  2. np.bincount только добавляет веса вместе, у вас есть метод at для всех ufuncs, поэтому вы можете многократно multiply или logical_and или что хотите.

Но для вашего случая использования np.bincount, вероятно, способ пойти.

0
задан Fernandes 24 February 2015 в 23:49
поделиться