Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何重塑astropy.coordinate.SkyCoord对象内的阵列形状?_Python_Astropy - Fatal编程技术网

Python 如何重塑astropy.coordinate.SkyCoord对象内的阵列形状?

Python 如何重塑astropy.coordinate.SkyCoord对象内的阵列形状?,python,astropy,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

我想使用一个包含坐标数组的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,但它返回一个SkyCoord的np.array,而不是一个包含坐标数组的SkyCoord对象,这不是我想要的。对于函数,Something_Fun调用SkyCoord的成员函数,这显然不适用于np.array

不幸的是,SkyCoord没有提供内置的重塑方法,即使它有一个形状方法!如果保持coords的形状,代码将无法工作,因为操作无法使用不同维度的数组进行广播

有什么优雅的方法可以做到这一点吗?我不希望重写生成coords或函数的代码,因为它会搞乱许多其他事情


将SkyCoord数据导出为字符串并再次导入可能会奏效,但太脏且会失去精度。作为最后手段,我可能会试试。

好的,我自己想出了一个解决办法。它仍然涉及来回进出口,但不会失去准确性。而且它很有效

coords=SkyCoord(coords.ra.reshape(y.shape),coords.dec.reshape(y.shape))

希望他们将来能提供一种内置的整形方法,这样可以节省我一些时间~

coords=np.restrageCoords,y.shape。目前正在为坐标系统提供对整形和其他形状更改方法的支持:。