Ваша ошибка выглядит так: a[a]
не a[a<cut]
:
In [508]: a[a]
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-508-bcb5f2cb8e92> in <module>()
----> 1 a[a]
IndexError: index 230 is out of bounds for axis 1 with size 5
Но для просмотра назначенного задания:
In [497]: a = np.array([230, 10, 284, 39, 76])
In [498]: mask = a<100
In [499]: mask
Out[499]: array([False, True, False, True, True])
Так что mask
выбирает3 из 5 элементов a
:
In [500]: a[mask]
Out[500]: array([10, 39, 76])
a*2
умножает все элементы a
, создавая массив из 5 элементов
In [501]: a*2
Out[501]: array([460, 20, 568, 78, 152])
, соответствующий двум, связанполучить какую-то ошибку;Я получаю:
In [502]: a[mask] = a*2
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-502-3df3d7d2d307> in <module>()
----> 1 a[mask] = a*2
ValueError: NumPy boolean array indexing assignment cannot assign 5 input values to the 3 output values where the mask is true
Но если я наложу маску и на правую сторону:
In [503]: a[mask] = a[mask]*2
In [504]: a
Out[504]: array([230, 20, 284, 78, 152])
Но * = сделает умножение на месте еще проще.
In [506]: a[mask] *= 2