将列表列表转换为numpy数组会得到不同的结果

2024-06-15 17:40:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我通过tcp接收9个双精度数组,拆分它们,用np.数组()方法,将它们存储在列表中,最后再次将此列表转换为numpy数组,这样我就可以保存它,然后加载以训练keras模型。你知道吗

每次我重新运行代码时,输出的形状是(500,6)或(500,)随机的, 我不做任何改变,只要继续运行相同的代码,就会得到不同的结果。你知道吗

  1. 这怎么可能?你知道吗
  2. 如何将(n,6)转换成(n,6)?我试过了。重塑()

编辑:我的完整代码:

def tcp_server_get_training_data():
host = "localhost"
port = 5367
msg = ""
mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mySocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
mySocket.bind((host, port))
# print(socket.getfqdn())
# print(socket.gethostbyname(socket.getfqdn()))
mySocket.listen(1)
print('waiting for connection...')
conn, addr = mySocket.accept()
print("Connection from: " + str(addr))
x = []
y = []
i = 0
n = 500
while i < n:
    data = conn.recv(128)
    doubles_sequence = array.array('d', data)
    doubles_sequence2 = np.array(doubles_sequence)
    x.append(doubles_sequence2[:6])
    y.append(doubles_sequence2[-3:])
    i += 1
    print(str(round((i/n)*100, 2))+"%")
    #print(doubles_sequence[:6])
xp = np.array(x)
yp = np.array(y)
print("X shape: "+str(xp.shape))
print("y shape: "+str(yp.shape))
np.save(file='x', arr=xp)
np.save(file='y', arr=yp)
conn.close()

当我用形状(500,6)打印x时,我得到:

>>> x.shape
(500, 6)
>>> x
array([[ 0. ,  0. ,  0. , -0.29219246,  0. , 0. ],
      [ 0. ,  0. ,  0. ,  0.34277358,  0. , 0. ],
      [ 0. ,  0. ,  0. ,  0.34277358,  0. , 0. ],

当我用shape(500,)打印x时,我得到:

>>> x.shape
(500,)
>>> x
array([array([ 0.,  0. ,  0. , -0.29219246,  0., 0.  ]),
       array([ 0. , 0.  , 0. , 0.34277358, 0., 0.]),
       array([ 0. ,  0.,  0., -0.10241638,  , dtype=object)

我真的很感激你的帮助,我试着自己想办法,但几个小时后我就沮丧了。 我在编程方面相对较新,花更多时间在C上,在python中,如果没有类型声明,我会非常困惑。你知道吗


Tags: 代码datanp数组socketconnarrayxp