Что эквивалентно реализации pythonic для следующего простого фрагмента кода в Matlab.
Matlab:
B = 2D array of integers as indices [1...100]
A = 2D array of numbers: [10x10]
A[B] = 0
который работает хорошо, например, для B[i]=42
он находит позицию 2
столбца 5
для установки. В Python это вызывает ошибку: вне границ, что логично. Однако для перевода приведенного выше кода Matlab на Python мы ищем питонические способы. Пожалуйста, также рассмотрите проблему для более высоких измерений, таких как:
B = 2D array of integers as indices [1...3000]
C = 3D array of numbers: [10x10x30]
C[B] = 0
Один из способов, которым мы думали об этом, - преобразовать элементы массива индексов в i,j
вместо абсолютной позиции. То есть позиции с 42
по divmod(42,m=10)[::-1] >>> (2,4)
. Таким образом, у нас будет nx2 >>> ii,jj
векторов индексов, которые можно легко использовать для индексации A
. Мы подумали, что это может быть лучшим способом, эффективным также для более высоких измерений в Python.
true
вызывает ошибку. - person Developer   schedule 20.01.2012