я могу видеть несколько колонок (fields
) сразу в numpy
структурированном массиве путем индексации со списком имен полей, напримерКак вернуть вид нескольких столбцов в NumPy структурированного массива
import numpy as np
a = np.array([(1.5, 2.5, (1.0,2.0)), (3.,4.,(4.,5.)), (1.,3.,(2.,6.))],
dtype=[('x',float), ('y',float), ('value',float,(2,2))])
print a[['x','y']]
#[(1.5, 2.5) (3.0, 4.0) (1.0, 3.0)]
print a[['x','y']].dtype
#[('x', '<f4') ('y', '<f4')])
Но проблема заключается в том, что это, кажется, копию, а не с точки зрения:
b = a[['x','y']]
b[0] = (9.,9.)
print b
#[(9.0, 9.0) (3.0, 4.0) (1.0, 3.0)]
print a[['x','y']]
#[(1.5, 2.5) (3.0, 4.0) (1.0, 3.0)]
Если я выбрать только один столбец, это мнение:
c = x['y']
c[0] = 99.
print c
#[ 99. 4. 3. ]
print a['y']
#[ 99. 4. 3. ]
Есть ли способ получить представление для более чем одного столбца одновременно?
У меня есть два метода обхода, один - просто пройти через столбцы, другой - создать иерархический dtype
, так что один столбец фактически возвращает структурированный массив с двумя (или более) полями, которые я хочу. К сожалению, zip
также возвращает копию, так что я не могу сделать:
x = a['x']; y = a['y']
z = zip(x,y)
z[0] = (9.,9.)
Ooh, это хорошо, работает Непоследовательных (или неравномерно разнесены) поля. – askewchan
Это замечательно! Как у него есть только 1 upvote? – AndyJost
Новый ответ на старый вопрос @andy не обращает на это особого внимания: P – askewchan