Используйте Google Favicon, но не получите глобус по умолчанию. когда не существует Фавикон

Если вы хотите пропустить каждую другую строку и каждый другой столбец, вы можете сделать это с помощью базовой нарезки:

In [49]: x=np.arange(16).reshape((4,4))
In [50]: x[1:4:2,1:4:2]
Out[50]: 
array([[ 5,  7],
       [13, 15]])

Это возвращает представление, а не копию вашего массива.

In [51]: y=x[1:4:2,1:4:2]

In [52]: y[0,0]=100

In [53]: x   # <---- Notice x[1,1] has changed
Out[53]: 
array([[  0,   1,   2,   3],
       [  4, 100,   6,   7],
       [  8,   9,  10,  11],
       [ 12,  13,  14,  15]])

, в то время как z=x[(1,3),:][:,(1,3)] использует расширенную индексацию и, таким образом, возвращает копию:

In [58]: x=np.arange(16).reshape((4,4))
In [59]: z=x[(1,3),:][:,(1,3)]

In [60]: z
Out[60]: 
array([[ 5,  7],
       [13, 15]])

In [61]: z[0,0]=0

Обратите внимание, что x не изменяется:

In [62]: x
Out[62]: 
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])

Если вы хотите выбрать произвольные строки и столбцы, тогда вы не можете использовать базовую нарезку. Вам нужно будет использовать расширенную индексацию, используя что-то вроде x[rows,:][:,columns], где rows и columns - это последовательности. Это, конечно же, даст вам копию, а не представление, вашего исходного массива. Это так, как и следовало ожидать, поскольку массив numpy использует непрерывную память (с постоянными шагами), и не было бы способа создать представление с произвольными строками и столбцами (поскольку для этого потребовались бы непостоянные шаги).

0
задан Yehuda Schwartz 3 March 2019 в 15:43
поделиться