如何给数组列标记?如何拆分数组?(Python,numpy)

1 投票
2 回答
1015 浏览
提问于 2025-04-27 23:52

我想给这个数组的列加上标签。左边的列我想标记为“输入”,右边的列我想标记为“输出”。

我还想知道是否可以把这两列分成两个单独的数组?

                     ([[[ 100000.,     233.],
                        [ 100010.,     299.],
                        [ 100020.,     253.],

                        [ 199980.,     243.],
                        [ 200000.,     247.]],

                       [[ 100000.,     295.],
                        [ 100010.,     294.],
                        [ 100020.,     317.],

                        [ 199980.,     307.],
                        [ 199990.,     321.],
                        [ 200000.,     308.]],

                       [[ 100000.,     338.],
                        [ 100010.,     362.],
                        [ 100020.,     337.],

                        [ 199980.,     334.],
                        [ 199990.,     317.],
                        [ 200000.,     326.]]])
暂无标签

2 个回答

1

array[0,:,0] 这个写法可以让你得到“输入”这一列,array[0,:,1] 则是“输出”这一列。(你可以查看 numpy 切片 的相关内容。)至于给这些列命名,通常建议你使用一个 dict(字典)来处理。

1

1. 使用 numpy.core.records.fromarrays 将数组转换为结构化数组:

>>> import numpy as np
>>>
>>> a = np.array(
...   [[[ 100000.,     233.],
...     [ 100010.,     299.],
...     [ 100020.,     253.],
...     [ 199980.,     243.],
...     [ 200000.,     247.]],
...    [[ 100000.,     295.],
...     [ 100010.,     294.],
...     [ 100020.,     317.],
...     [ 199990.,     321.],
...     [ 200000.,     308.]],
...    [[ 100000.,     338.],
...     [ 100010.,     362.],
...     [ 100020.,     337.],
...     [ 199990.,     317.],
...     [ 200000.,     326.]]]
... )
>>> b = np.core.records.fromarrays(
...     a.reshape(-1, 2).T, names='input,output'
... ).reshape(a.shape[:-1])
>>> b[0][0]['input']
100000.0
>>> b[0][0]['output']
233.0

2. 使用切片:

>>> a[..., 0]
array([[ 100000.,  100010.,  100020.,  199980.,  200000.],
       [ 100000.,  100010.,  100020.,  199990.,  200000.],
       [ 100000.,  100010.,  100020.,  199990.,  200000.]])
>>> a[..., 1]
array([[ 233.,  299.,  253.,  243.,  247.],
       [ 295.,  294.,  317.,  321.,  308.],
       [ 338.,  362.,  337.,  317.,  326.]])

撰写回答