如何重塑astropy.coordinate.SkyCoord对象中的数组?

时间:2016-05-24 03:52:30

标签: python astropy

我想使用包含数组坐标的一个 SkyCoord对象作为输入参数来制作二维等高线图。

为此,我想在参数上制作一个网格。

代码是这样的。

l = np.linspace(0, 360, 180)
b = np.linspace(-90, 90, 90) # Two axes I wanted to make contour on.
y=y.reshape(y.size,1,1) #(originally) an 1D array the same size as `coords`.
l=l.reshape(1,l.size,1)
b=b.reshape(1,1,b.size)
coords = coords.reshape(y.shape) # No, this does not work.
coords.shape = y.shape # You can't write attributes like this. How frustrating.
z = Something_Fun((l,b),y,coords)

问题来了。 我尝试使用np.meshgird而不是coords,但它返回{strong> np.array SkyCoord,而不是一个 { {1}}对象包含坐标数组,这不是我想要的。函数SkyCoord调用Something_Fun的成员函数,这当然不适用于SkyCoord

很遗憾,np.array内置reshape方法未提供 <{1}},即使确实SkyCoord方法!如果保持shape的形状,代码将无法工作,因为操作无法使用不同维度的数组进行广播。

有没有优雅的方法来做到这一点?我不希望重写生成coords或函数coords的代码,因为它会搞砸许多其他内容。

Something_Fun数据导出到字符串并再次导入可能会起到作用,但是太“脏”并且会失去精确度。我可以尝试它作为最后的手段。

1 个答案:

答案 0 :(得分:0)

好的,我自己想出了一个解决方案。它仍然涉及来回导出和导入,但它不会失去精度。它只是有效。

reshape

希望将来能提供内置的func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? { let confirm = UITableViewRowAction(style: .Normal, title: "Confirm") { action, index in //CODE } confirm.backgroundColor = UIColor.greenColor() let delete = UITableViewRowAction(style: .Normal, title: "Delete") { action, index in //code } delete.backgroundColor = UIColor.redColor() return [delete,confirm] } func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool { // the cells you would like the actions to appear needs to be editable return true } func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { // you need to implement this method too or you can't swipe to display the actions } 方法,这样可以节省一些时间〜