将元组列表转换为 numpy 数组并重塑它?
Converting list of tuples into numpy array and reshaping it?
我有三个列表。
a = [1, 2, 3, 4, 5]
b = [6, 7, 8, 9, 10]
c = [11, 12 , 13, 14, 15]
我将它们组合起来并使用列表理解制作一个元组列表
combine_list = [(a1, b1, c1) for a1 in a for b1 in b for c1 in c]
这个组合列表有 5*5*5 = 125 个元素。
现在我想将此 combine_list 转换为形状为 (5, 5, 5) 的 numpy 数组。所以,我使用以下代码:
import numpy as np
combine_array = np.asarray(combine_list).reshape(5, 5, 5)
这给了我一个错误:
ValueError: total size of new array must be unchanged
但是,当我尝试将单个 125 个数字(无元组元素)的列表重塑为 numpy 数组时,没有发生此类错误。
关于如何将元组列表重塑为 numpy 数组的任何帮助?
如果你真的需要 5x5x5 中的 3 个整数,那么你需要一个 3 个整数的数据类型。使用 itertools.product
组合列表:
>>> import itertools
>>> np.array(list(itertools.product(a,b,c)), dtype='int8,int8,int8').reshape(5,5,5)
或者,只需在整形中包含 3 个元素:
>>> np.array(list(itertools.product(a,b,c))).reshape(5,5,5,3)
不确定这是否是您想要的,但您可以使用多维列表理解。
combine_list = [[[ (i, j, k) for k in c] for j in b] for i in a]
combine_array = np.asarray(combine_list)
我有三个列表。
a = [1, 2, 3, 4, 5]
b = [6, 7, 8, 9, 10]
c = [11, 12 , 13, 14, 15]
我将它们组合起来并使用列表理解制作一个元组列表
combine_list = [(a1, b1, c1) for a1 in a for b1 in b for c1 in c]
这个组合列表有 5*5*5 = 125 个元素。
现在我想将此 combine_list 转换为形状为 (5, 5, 5) 的 numpy 数组。所以,我使用以下代码:
import numpy as np
combine_array = np.asarray(combine_list).reshape(5, 5, 5)
这给了我一个错误:
ValueError: total size of new array must be unchanged
但是,当我尝试将单个 125 个数字(无元组元素)的列表重塑为 numpy 数组时,没有发生此类错误。
关于如何将元组列表重塑为 numpy 数组的任何帮助?
如果你真的需要 5x5x5 中的 3 个整数,那么你需要一个 3 个整数的数据类型。使用 itertools.product
组合列表:
>>> import itertools
>>> np.array(list(itertools.product(a,b,c)), dtype='int8,int8,int8').reshape(5,5,5)
或者,只需在整形中包含 3 个元素:
>>> np.array(list(itertools.product(a,b,c))).reshape(5,5,5,3)
不确定这是否是您想要的,但您可以使用多维列表理解。
combine_list = [[[ (i, j, k) for k in c] for j in b] for i in a]
combine_array = np.asarray(combine_list)