有混合类型......如果我已经正确地读了你,你基本上想要将'a'和'b'的值配对。如果是这种情况,可以将输入数组展平并重新组合,同时保留适当的dtype。这是一种方法,如果您想以不同的方式构建它,则可以更改格式。
import numpy as np
a = np.array([[1, 2], [3, 4], [5, 6]])
a = a.flatten()
b = np.array([[1, 2.1], [3.5, 4], [5, 6.8]])
b = b.flatten()
dt = a.dtype.descr + b.dtype.descr
c = np.array(list(zip(a, b)), dtype=dt)
frmt = """
:Array 'a'... {}
:Array 'b'... {}
:Combined dtype ... {}
:Resultant structured array...
{!r:}
:Viewed column-wise
{!r:}
:
"""
print(frmt.format(a, b, dt, c, c.reshape(c.shape[0], 1)))
输出
:Array 'a'... [1 2 3 4 5 6]
:Array 'b'... [ 1.000 2.100 3.500 4.000 5.000 6.800]
:Combined dtype ... [('', '<i8'), ('', '<f8')]
:Resultant structured array...
array([(1, 1.0), (2, 2.1), (3, 3.5), (4, 4.0), (5, 5.0), (6, 6.8)],
dtype=[('f0', '<i8'), ('f1', '<f8')])
:View column-wise
array([[(1, 1.0)],
[(2, 2.1)],
[(3, 3.5)],
[(4, 4.0)],
[(5, 5.0)],
[(6, 6.8)]],
dtype=[('f0', '<i8'), ('f1', '<f8')])
:
作为替代一切,你可以从 https://github.com/numpy/numpy/blob/master/numpy/lib/recfunctions.py
from numpy.lib import recfunctions as rfn
a0 = np.array([[1, 2],[3, 4],[5, 6]])
b0 = np.array([[1, 2.1],[3.5, 4],[5, 6.8]])
d = rfn.merge_arrays((a0, b0), flatten=True, usemask=False, asrecarray=False)
屈服利用一些可选工具...
>>> c
array([(1, 1.0), (2, 2.1), (3, 3.5), (4, 4.0), (5, 5.0), (6, 6.8)],
dtype=[('f0', '<i8'), ('f1', '<f8')])
>>> d
array([(1, 1.0), (2, 2.1), (3, 3.5), (4, 4.0), (5, 5.0), (6, 6.8)],
dtype=[('f0', '<i8'), ('f1', '<f8')])
>>> c == d
array([1, 1, 1, 1, 1, 1], dtype=bool)
编辑 根据你的意见,看起来你需要考虑你真的想保持数据在一起。一个dtype为'object'的数组是可能的,但可能不是很有用......可能,但不是组织它的最好方法。如果您的意图是存档,请考虑将其保存为* .npz格式。无论如何...
a = np.arange(9).reshape(3,3)
>>> b = np.arange(9.).reshape(3,3)
>>> c = np.array(["array a", "array b"])
>>> d = np.array([a,b,c], dtype='object')
>>> d
array([array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]]),
array([[ 0.000, 1.000, 2.000],
[ 3.000, 4.000, 5.000],
[ 6.000, 7.000, 8.000]]),
array(['array a', 'array b'],
dtype='<U7')], dtype=object)
使用NumPy版本1.11.1,当我执行这些代码行时,我发现数组'c'具有整型dtype。你使用的是哪个版本的NumPy? –
对于我使用numpy 1.11.1 – Jakub
阵列'c'是'np.int64'双重检查'a'和'b'的dtype。 – hpaulj