Python 将数组追加到另一个数组的开头

Python 将数组追加到另一个数组的开头,python,arrays,numpy,Python,Arrays,Numpy,我正在尝试执行一项简单的任务:将一个数组附加到另一个数组的开头。以下是我的意思: a = ['a','b','c','d','e','f','g','h','i'] b = [6,4,1.,2,8,784.,43,6.,2] c = [8,4.,32.,6,1,7,2.,9,23] # Define arrays. a_arr = np.array(a) bc_arr = np.array([b, c]) # Append a_arr to beginning of bc_arr print

我正在尝试执行一项简单的任务:将一个数组附加到另一个数组的开头。以下是我的意思:

a = ['a','b','c','d','e','f','g','h','i']
b = [6,4,1.,2,8,784.,43,6.,2]
c = [8,4.,32.,6,1,7,2.,9,23]

# Define arrays.
a_arr = np.array(a)
bc_arr = np.array([b, c])

# Append a_arr to beginning of bc_arr
print np.concatenate((a_arr, bc_arr), axis=1)
但是我一直得到一个
ValueError:所有的输入数组必须有相同数量的维度
error

数组
a_-arr
bc_-arr
来自不同的过程,因此我无法操纵它们的创建方式(即:我无法使用
a、b、c
列表)

如何生成
a_arr
bc_arr
的新数组,使其看起来像:

array(['a','b','c','d','e','f','g','h','i'], [6,4,1.,2,8,784.,43,6.,2], [8,4.,32.,6,1,7,2.,9,23])
这应该行得通

In [84]: a=np.atleast_2d(a).astype('object')

In [85]: b=np.atleast_2d(b).astype('object')

In [86]: c=np.atleast_2d(c).astype('object')

In [87]: np.vstack((a,b,c))
Out[87]:
array([[a, b, c, d, e, f, g, h, i],
       [6.0, 4.0, 1.0, 2.0, 8.0, 784.0, 43.0, 6.0, 2.0],
       [8.0, 4.0, 32.0, 6.0, 1.0, 7.0, 2.0, 9.0, 23.0]], dtype=object)

你能做点像这样的事吗

In [88]: a = ['a','b','c','d','e','f','g','h','i']

In [89]: b = [6,4,1.,2,8,784.,43,6.,2]

In [90]: c = [8,4.,32.,6,1,7,2.,9,23]

In [91]: joined_arr=np.array([a_arr,b_arr,c_arr],dtype=object)

In [92]: joined_arr
Out[92]: 
array([['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'],
       [6.0, 4.0, 1.0, 2.0, 8.0, 784.0, 43.0, 6.0, 2.0],
       [8.0, 4.0, 32.0, 6.0, 1.0, 7.0, 2.0, 9.0, 23.0]], dtype=object)

我可以问一下,为什么要使用
numpy
数组来存储混合数据类型,尤其是
char
s?如果您使用它,我不确定大部分
numpy
功能是否可用。为什么不使用一个简单的列表或自定义类呢?这与我昨天提出的这个问题有关:我仍然不明白使用
numpy
数组有什么好处……在创建数组时,b和c必须合并吗?@padraiccningham不,每个初始数组(
a\u arr
bc\u arr
)应该作为子数组保留在问题中显示的最终数组中。这似乎有效,我可以使用
bc\u arr
而不是
b\u arr,c\u arr
。谢谢,不用担心。我错过了保持原样的需要。