Python 在numpy数组中舍入特定列

Python 在numpy数组中舍入特定列,python,arrays,numpy,rounding,Python,Arrays,Numpy,Rounding,我有一个多维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['

我有一个多维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)

有没有办法将大小、轴比和位置角四舍五入到小数点后3位?

我找到了答案,您只需在堆叠阵列之前将其四舍五入即可:

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)

您想要小数点后有三位数字的字符串吗?还是要将内部二进制表示形式四舍五入到最接近的千位?字符串本身很好,我想将浮点值四舍五入到三位