我有一个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-以及构建数据类型