【问题标题】:Sending Complete Vector from Python Client to Java Server将完整向量从 Python 客户端发送到 Java 服务器
【发布时间】:2015-10-04 03:59:39
【问题描述】:

我正在开发一个应用程序,它在 Python(nibabel 库)中处理一些医学图像数据,并将数据发送到 Java(TCP 套接字)中的处理服务器,这比相同的 Python 实现要快得多。

从这个意义上说,我正在尝试将 3D 矩阵 (271x271x221) 从 Python 发送到 Java:

sock.sendall("Input " + str(input_matrix.flatten()).strip('[]') + "\n")

但问题是 Python 在将矩阵转换为字符串时会缩短展平矩阵,如下所示:

print input_matrix.flatten()

   [12 12 12 ..., 12 12 12]

所以Java服务器接收到:

Server is open!
Connection successful
   Waiting for data...
      Received: Input 12 12 12 ..., 12 12 12

因此,我无法在 Java 服务器中重建矩阵。

如何在 Python 客户端中不使用循环发送所有数据(循环处理完整的 3D 矩阵会很慢)?

提前谢谢你!

【问题讨论】:

    标签: java python sockets matrix flatten


    【解决方案1】:

    问题是nibabel 向量类型上的str 试图干预和缩短输出,因为向量很大。

    我没有使用过 nibabel,但通常 repr 函数不应该缩短它 - 现在,nibabel 可能已经为他们的向量类覆盖了这个函数。

    最好不要使用 str 或 repr - 而是制作自己的字符串。

    ",".join(input_matrix.flatten()) 为您提供每个元素之间带有逗号的整个向量。

    【讨论】:

    • 我已经尝试过了,但现在我收到了另一个与.join:TypeError: sequence item 0: expected string, numpy.int16 found 中的转换有关的错误。我该如何解决这个问题?谢谢AJK!
    • ','.join(str(x) for x in input_matrix.flatten())
    • 谢谢!最后一个效果很好。顺便问一下,java中有没有等价的行?
    • Java 应该有一个等价的......但我并不精通它。此外,它取决于您使用的类 - 简单数组、arraylist 等。在 google 上搜索它应该会给你一些东西
    猜你喜欢
    • 2018-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多