Вам действительно не нужен al oop ни в MATLAB, ни numpy для этого. В обоих языках явные циклы имеют тенденцию быть медленными по сравнению с внутренними циклами, которые запускаются при векторизации кода. Дополнительная проблема с добавлением внутри al oop заключается в том, что каждая операция перераспределяет весь массив для добавления нового элемента. Вы хотите избежать добавления и как можно большего количества предварительного выделения.
Оба пакета имеют функцию meshgrid
. В numpy вы можете сделать:
ii = np.arange(3) + 1
jj = np.arange(4) + 1
j, i = np.meshgrid(jj, ii)
matrix = np.stack((i.ravel(), j.ravel()), axis=1)
В MATLAB это будет очень похоже:
ii = 1:3;
jj = 1:4;
[i, j] = meshgrid(ii, jj);
matrix = [i(:) j(:)];
Если вам абсолютно необходимо сделать это в al oop с постоянным перераспределением MATLAB l oop очень легко переводится в numpy. Вместо неявного vertcat
используйте np.append
или np.concatenate
:
matrix = np.array((0, 2));
for i in range(1, 4)
for j in range(1, 5)
temp = [[i, j]]
matrix = np.append(matrix, temp, axis=0)