如何给数组列标记?如何拆分数组?(Python,numpy)
我想给这个数组的列加上标签。左边的列我想标记为“输入”,右边的列我想标记为“输出”。
我还想知道是否可以把这两列分成两个单独的数组?
([[[ 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.]])