如何将字符串列表与存储在列表中的numpy数组合并



我有一个numpy数组列表和一个字符串列表。我想将字符串与数组合并。这些是我的数组和字符串:

arrs=[np.array([[1.,0.,0.], [1.,1.,1.]]), np.array([[4.,4.,4.], [2.,4.,0.]]),
np.array([[9.,0.,9.], [9.,7.,5.]])]
names=['group_A', 'group_B', 'group_H']

names中的第一个字符串应添加为arrs中第一个数组的最后一列。第二个也和第二个数组合并,等等。最后,我想合并所有的数组,并得到它:

merged_arrs=[np.array([[1.,0.,0., 'group_A'], [1.,1.,1., 'group_A'],
[4.,4.,4., 'group_B'], [2.,4.,0., 'group_B'],
[9.,0.,9., 'group_H'], [9.,7.,5., 'group_H']])]

我不知道如何在python中将这些字符串与数组连接起来,非常感谢提前提供的任何帮助。

我们先从列表开始,然后将每个子列表转换为np.array怎么样?我不知道为什么您需要np.array而不是使用内置列表,但在np.array中设置dtype='object'可以存储不同类型的项目。

示例代码

import numpy as np
arrs = [np.array([[1., 0., 0.], [1., 1., 1.]]),
np.array([[4., 4., 4.], [2., 4., 0.]]),
np.array([[9., 0., 9.], [9., 7., 5.]])]
# Convert each sub array into list
arrs = [A.tolist() for A in arrs]
names = ['group_A', 'group_B', 'group_H']
for A, name in zip(arrs, names):
for A_sub in A:
A_sub.append(name)
# Convert each sub array into numpy array
merged_arrs = [np.array(A, dtype='object') for A in arrs]
print(merged_arrs)
# Outputs:
# [array([[1.0, 0.0, 0.0, 'group_A'], [1.0, 1.0, 1.0, 'group_A']], dtype=object), 
#  array([[4.0, 4.0, 4.0, 'group_B'], [2.0, 4.0, 0.0, 'group_B']], dtype=object), 
#  array([[9.0, 0.0, 9.0, 'group_H'], [9.0, 7.0, 5.0, 'group_H']], dtype=object)]

参考

https://numpy.org/doc/stable/reference/arrays.dtypes.html#specifying-以及构建数据类型

最新更新