我想绘制points
:
points = np.random.multivariate_normal(mean=(0,0), cov=[[0.4,9],[9,10]],size=int(1e4))
print(points)
[[-2.50584156 2.77190372]
[ 2.68192136 -3.83203819]
...,
[-1.10738221 -1.72058301]
[ 3.75168017 5.6905342 ]]
print(type(points))
<class 'numpy.ndarray'>
data = ascii.read(datafile)
type(data['ra'])
astropy.table.column.Column
type(data['dec'])
astropy.table.column.Column
然后我尝试:
points = np.array([data['ra']], [data['dec']])
并获得
TypeError: data type not understood
思想?
答案 0 :(得分:2)
使用data
属性可以将astropy Table Column对象转换为numpy数组:
In [7]: c = Column([1, 2, 3])
In [8]: c.data
Out[8]: array([1, 2, 3])
您还可以使用as_array()
表格方法将整个表格转换为numpy结构化数组(例如,在您的示例中为data.as_array()
)。
BTW我认为实际问题不是关于astropy Column
而是你的numpy数组创建语句。应该是:
arr = np.array([data['ra'], data['dec']])
这适用于Column
个对象。
答案 1 :(得分:0)
numpy.array
的签名是numpy.array(object, dtype=None,)
因此,在调用np.array([data['ra']], [data['dec']])
时,[data['ra']]
是要转换为numpy数组的对象,[data['dec']]
是数据类型,不理解(如错误所示)。
这个问题实际上并不清楚你想要实现的目标 - 可能是像
这样的东西points = np.array([data['ra'], data['dec']])
答案 2 :(得分:0)
但请记住,如果您想要的是绘制点,那么 需要转换为数组。以下内容可以正常使用:
from matplotlib import pyplot as plt
plt.scatter(data['ra'], data['dec'])
无需转换为数组。