Круглые значения c столбцов в массиве numpy - PullRequest
0 голосов
/ 05 марта 2020

У меня есть многомерный массив numpy, некоторые столбцы с плавающей точкой, другие - строки. Я хочу округлить столбцы с плавающей точкой до 3 десятичных знаков. Я не могу использовать np.round(), так как кажется, что он работает только с numpy массивами, которые состоят из одного типа (то есть все они являются плавающими). Фрагмент моего кода можно увидеть ниже:

cat = '/home/myname/catalogue.csv'
cat = Table.read(cat, format="ascii")

ID1 = np.array(cat['ID_1'])
ID1 = ID1.astype(str)

ID2 = np.array(cat['ID_2'])
ID2 = ID2.astype(str)

mag = np.array(cat['magnitude'])
mag = mag.astype(float)

semi_major_axis = np.array(cat['SMA'])
semi_major_axis = semi_major_axis.astype(float)

semi_minor_axis = np.array(cat['sma'])
semi_minor_axis = semi_minor_axis.astype(float)

position_angle = np.array(cat['position_angle'])
position_angle = position_angle.astype(float)

match = (ID1, ID2, mag, (semi_minor_axis/semi_major_axis), position_angle)
match = np.stack(match, axis=1)

Есть ли способ округлить конкретно величину, ось крысы ios и угол положения до 3 десятичных знаков?

1 Ответ

0 голосов
/ 05 марта 2020

Я нашел ответ, вам просто нужно округлить массивы, прежде чем складывать их:

cat = '/home/myname/catalogue.csv'
cat = Table.read(cat, format="ascii")

ID1 = np.array(cat['ID_1'])
ID1 = ID1.astype(str)

ID2 = np.array(cat['ID_2'])
ID2 = ID2.astype(str)

mag = np.array(cat['magnitude'])
mag = mag.astype(float)
mag = np.round(mag, decimals = 3)

semi_major_axis = np.array(cat['SMA'])
semi_major_axis = semi_major_axis.astype(float)

semi_minor_axis = np.array(cat['sma'])
semi_minor_axis = semi_minor_axis.astype(float)

axis_ratio = semi_minor_axis/semi_major_axis
axis_ratio = axis_ratio.astype(float)
axis_ratio = np.round(axis_ratio, decimals = 3)

position_angle = np.array(cat['position_angle'])
position_angle = position_angle.astype(float)
position_angle = np.round(position_angle, decimals = 3 )

match = (ID1, ID2, mag, axis_ratio, position_angle)
match = np.stack(match, axis=1)
...