如何连接 numpy 数组以创建 2d numpy 数组

How to concatenate numpy arrays to create a 2d numpy array

我正在研究使用 AI 来提高我赢得基诺的几率。 (别笑哈哈) 我的问题是,当我收集数据时,它一次以一维图形数组的形式出现。我有不同的文件,这些文件收集了数据并对其进行了格式化,并对数据集进行了简单的数学运算。现在,我正在尝试为我的神经网络层获取特定形状的数据,但遇到了问题。

  formatted_list = file.readlines()     
  #remove newline chars     
  formatted_list = list(filter(("\n").__ne__, formatted_list))     
  #iterate through each drawing, format the ends and split into list of ints     
  for i in formatted_list:         
     i = i[1:]        
     i = i[:-2]         
     i = [int(j) for j in i.split(",")]         
     #convert to numpy array
     temp = np.array(i)
     #t1 = np.reshape(temp, (-1, len(temp))) 
     #print(np.shape(t1))
     #append to master list
     master_list.append(temp)
  print(np.shape(master_list))     

这给出了“(292,)”的输出,这是正确的,有 292 行数据,但它们也包含 20 列。如果我在“#t1 = np.reshape(temp, (-1, len(temp))) #print(np.shape(t1))”中发表评论,它会给出“(1,20)”的输出(1,20)(1,20)(1,20)(1,20)(1,20)(1,20)(1,20)”等。我希望将所有这些行加在一起并且保持列相同 (292,20)。如何实现?

我试过重塑最终列表和许多其他东西,但没有成功。它要么填充行中的每个数字并将其添加到第一个维度,IE (5840,) 我期望能够将每个新绘图附加到主列表,转换为 numpy 数组并将其重塑为 292 行 20列。看起来它只是想保持单一维度。我也试过 numpy.concat 但没有成功。谢谢。

您可以使用 vstack 连接您的 master_list

master_list = []
for array in formatted_list:
    master_list.append(array)

master_array = np.vstack(master_list)

或者,如果您知道包含数组的 formatted_list 的长度和数组长度,您可以预先分配 master_array.

import numpy as np

formatted_list = [np.random.rand(20)]*292
master_array = np.zeros((len(formatted_list), len(formatted_list[0])))
for i, array in enumerate(formatted_list):
    master_array[i,:] = array

** 编辑 **

正如 hpaulj 在评论中提到的,np.array()np.stack()np.vstack() 使用此输入并生成了一个形状为 (7,20) 的 numpy 数组。