繁体   English   中英

使用来自另一个数组的值在python中创建带有值的二维数组

[英]Creating 2D array with values in python with values from another array

我正试图在 python 中更好地编码,但被困在一个相当标准的问题上。 我有一个给定的数组,需要创建一个双倍行的数组。 新数组应该以这样一种方式对应于原始数组,即新数组中的两行包含与原始数组中的一个值相同的值。 我正在使用 Python 3.7 和 numpy 数组。

例子:

original_array = [[1,2,3],
                  [4,5,6],
                  [7,8,9]]
result = [[1,2,3],
          [1,2,3],
          [4,5,6],
          [4,5,6],
          [7,8,9],
          [7,8,9]]

有一种手动方法可以做到这一点:

result = np.zeros((original_array.shape[0]*2, original_array.shape[1]))
for i in range(result.shape[0]):
    result[i]=original_array[i//2]

但是,由于我的应用程序处理非常大的数组,因此我尝试尽可能多地使用库函数。 经过一番搜索,我想出了以下内容:

result = np.fromfunction(lambda i,j: original_array[i//2][j], 
                         (original_array.shape[0]*2, original_array.shape[1]),
                         dtype=int)

但是,此调用会生成一个 4D 数组,其中大部分值仅来自第一行,因此它显然无法按预期方式工作。

为什么这个调用会失败,我怎样才能达到想要的效果?

编辑:

我发现了呼叫失败的原因。 np.fromfunction(...) 不直接迭代索引,而是将它们作为数组提供。 当生成的数组与原始数组的大小不同时,原始数组对索引的访问不再以预期的方式工作。

使用 np.repeat(...) 作为 StupidWolf 建议的作品。

您可以使用 np.repeat:

np.repeat(original_array,2,axis=0)

array([[1, 2, 3],
       [1, 2, 3],
       [4, 5, 6],
       [4, 5, 6],
       [7, 8, 9],
       [7, 8, 9]])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM