python - 如何将 ndarray 转换为结构化数组?

标签 python numpy

我有一个形状为 (100,50) 的常规 float ndarray。我如何给前两列命名,即 'idx1''idx2',以及 'data' 给其余的列。

最佳答案

您可以使用view 方法。这是一个示例,使用形状为 (3, 5) 的数组进行演示:

In [21]: x
Out[21]: 
array([[  0.,   1.,   2.,   3.,   4.],
       [  5.,   6.,   7.,   8.,   9.],
       [ 10.,  11.,  12.,  13.,  14.]])

In [22]: y = x.ravel().view(dtype=[('idx1', float), ('idx2', float), ('data', float, 3)])

In [23]: y['idx1']
Out[23]: array([  0.,   5.,  10.])

In [24]: y['data']
Out[24]: 
array([[  2.,   3.,   4.],
       [  7.,   8.,   9.],
       [ 12.,  13.,  14.]])

In [25]: y['data'][1]
Out[25]: array([ 7.,  8.,  9.])

请注意,y 是一个一维数组;它的形状为 (3,)。如果您将转换更改为 y = x.view(...)(即不要弄乱 x),y 将具有(3,1),y['idx1'] 的形状为 (3,1)。

关于python - 如何将 ndarray 转换为结构化数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15852579/

相关文章:

python - 为什么 statsmodels 的 OLS 中的四次线性回归与 LibreOffice Calc 不匹配?

python - boost python hello程序上的导入错误

python - 如何有效地循环pandas中的日期列

python - 二维数组的按行 numpy.isin

python - 仅累积一列的 numpy 数组

python - 使用 np.random 生成值

python - PySVN 需要安装 Subversion 吗?

python - 如何使用汇总统计注释seaborn PairGrid 对角线

python - 循环中的 numpy column_stack

python - 参数类型在正常和反射运算符重载 (__sub__/__rsub__) 方面不同