дан Numpy массиву
>>> numpy.array([[x for x in xrange(i,i+5)] for i in xrange(0,100,10)])
array([[ 0, 1, 2, 3, 4],
[10, 11, 12, 13, 14],
[20, 21, 22, 23, 24],
[30, 31, 32, 33, 34],
[40, 41, 42, 43, 44],
[50, 51, 52, 53, 54],
[60, 61, 62, 63, 64],
[70, 71, 72, 73, 74],
[80, 81, 82, 83, 84],
[90, 91, 92, 93, 94]])
Вы сначала transpose это
>>> narray=numpy.array([[x for x in xrange(i,i+5)] for i in xrange(0,100,10)])
>>> tarray=numpy.transpose(narray)
array([[ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90],
[ 1, 11, 21, 31, 41, 51, 61, 71, 81, 91],
[ 2, 12, 22, 32, 42, 52, 62, 72, 82, 92],
[ 3, 13, 23, 33, 43, 53, 63, 73, 83, 93],
[ 4, 14, 24, 34, 44, 54, 64, 74, 84, 94]])
, а затем преобразовать в list
>>> larray=tarray.tolist()
>>> larray
[[0, 10, 20, 30, 40, 50, 60, 70, 80, 90], [1, 11, 21, 31, 41, 51, 61, 71, 81, 91], [2, 12, 22, 32, 42, 52, 62, 72, 82, 92], [3, 13, 23, 33, 43, 53, 63, 73, 83, 93], [4, 14, 24, 34, 44, 54, 64, 74, 84, 94]]
теперь вы можете индекс larray
, как larray[0], larray[1]
, чтобы получить индивиды l списки.
идеальный .. спасибо – Fraz
Если йо u're довольны элементами, хранящимися в массиве 1D numpy, вы можете просто индексировать транспонированный массив, например: 'tarray [n]' для n-го столбца. Если вам действительно нужен каждый элемент в списке, вы можете преобразовать его по мере необходимости: 'list (tarray [n])' –
Использование транспонирования для получения столбца немного непрозрачно. Нарезка (как описано [@Anthony Kong] (http://stackoverflow.com/a/9858902/709852)) является более прозрачным способом сделать это. Как и выше, если вы действительно хотите, чтобы это было как список, то вроде 'list_n = list (a [,, n])' для n-го столбца (где 'a' - массив numpy). –