Может ли массив numpy 1D не быть смежным? - PullRequest
1 голос
/ 25 марта 2020

Возможно ли сделать массив 1D не C_CONTIGUOUS или F_CONTIGUOUS в numpy?

Я думаю, что понятие смежных имеет смысл только для массивов с большим количеством измерений, но я не смог найти ничего в документах .

Я попробовал следующее, чтобы создать несмежный одномерный массив:

>>> np.empty(10).flags
  C_CONTIGUOUS : True
  F_CONTIGUOUS : True
  OWNDATA : True
  WRITEABLE : True
  ALIGNED : True
  WRITEBACKIFCOPY : False
  UPDATEIFCOPY : False
>>> np.empty(10).copy('F').flags
  C_CONTIGUOUS : True
  F_CONTIGUOUS : True
  OWNDATA : True
  WRITEABLE : True
  ALIGNED : True
  WRITEBACKIFCOPY : False
  UPDATEIFCOPY : False

1 Ответ

3 голосов
/ 25 марта 2020

Просто создайте вид массива, который пропускает некоторые элементы, и он будет несмежным:

In [2]: a = np.arange(10)                                                                     

In [3]: a.flags                                                                               
Out[3]: 
  C_CONTIGUOUS : True
  F_CONTIGUOUS : True
  OWNDATA : True
  WRITEABLE : True
  ALIGNED : True
  WRITEBACKIFCOPY : False
  UPDATEIFCOPY : False

In [4]: a[::2].flags                                                                          
Out[4]: 
  C_CONTIGUOUS : False
  F_CONTIGUOUS : False
  OWNDATA : False
  WRITEABLE : True
  ALIGNED : True
  WRITEBACKIFCOPY : False
  UPDATEIFCOPY : False
...