【发布时间】:2023-04-01 07:17:01
【问题描述】:
这是我的排名 0 的数据集,我想在将其转换为 NumPy 数组后使用 Send 将其发送到另一个排名。
data = [['zzz', '2', '-1'], ['xxx', '5', '-99'], ['zzz', '2', '-1']]
我在转换为 NumPy 数组时尝试了很多字符串数据类型,但都不起作用。
comm = MPI.COMM_WORLD
rank = comm.Get_rank()
size = comm.Get_size()
if rank == 0:
data = [['zzz', '2', '-1'], ['xxx', '5', '-99'], ['zzz', '2', '-1']]
data_arr = np.array(data, dtype='S13')
comm.Send(data, dest=1, tag=10)
else:
data_arr = np.empty(shape=(3,3),dtype='S13')
comm.Recv(data_arr, source=0, tag=10)
我知道 send 和 recv(下)可以处理这个问题,但我仍然想知道是否可以使用 Send 和 Recv 传递数组或字符串列表。
非常感谢!
【问题讨论】:
-
为什么是
c标签?请不要发送不相关的标签。 -
@Julien 感谢您的通知,我认为将 Python 中的字符串转换为 C char 可能是一种解决方案。
-
为什么是数组而不是列表?
-
@hpaulj 根据 Mpi4py 的文档,NumPy 数组是更快的方式。
标签: python numpy numpy-ndarray mpi4py