【问题标题】:Reshape 1D List to 2D List -Python将一维列表重塑为二维列表-Python
【发布时间】:2023-02-19 12:06:18
【问题描述】:

我有以下列表:

a = ['2', '3', '4', '7', '5']

我想转换为 2D 矩阵,知道我有 4 列,我不考虑这里的行

我想在不重复项目的情况下实现这一点,只需用None或空格填充其余部分,如下所示:

New_a = [['2', '3', '4', '7'],
         ['5', None, None, None]] 

我尝试使用重塑函数对其进行重塑,但没有成功,因为目标矩阵不一致。

我也试过(调整大小功能)。它没有用,因为一旦末尾有一些空隙,它就会重复这些项目。

【问题讨论】:

  • 你说你正在尝试使用reshape,但你没有建议你在任何地方使用 Numpy。如果你是,如果你让人们知道你正在使用它(并展示你的代码),你会得到更好的答案。
  • Python 没有矩阵。它有列表列表,但这与二维数组不同,因此没有reshapecolumns 的概念。 Numpy 确实提供二维数组,并且可以调整这些数组的大小——例如,通过将您的 List 转换为 Numpy 数组并使用 a.resize((2,4)) 这将使用空字符串扩展您的 List (因为您最初使用的是字符串元素)。

标签: python


【解决方案1】:
New_a = []
a = ['2', '3', '4', '7', '5']
for i in range(0,len(a),4) :
    New_a.append(a[i:i+4])
if len(New_a[-1]) != 4 :
    New_a[-1] += [None]*(4-len(New_a[-1])) 
print(New_a)

输出 :-

[['2', '3', '4', '7'], ['5', None, None, None]]

这应该适用于不同长度的一维数组a

您还可以使用 numpy 数组的 reisze() 函数,但它会用空字符串而不是 None 填充您的数组。

例子 :-

a = ['2', '3', '4', '7', '5']
a1=np.array(a)
a1.resize((int(np.ceil(len(a)/4)),4))

a1 看起来像这样:-

array([['2', '3', '4', '7'],
       ['5', '', '', '']], dtype='<U1')

【讨论】:

  • 太感谢了。第二个代码完美
猜你喜欢
  • 1970-01-01
  • 2019-02-01
  • 2019-09-04
  • 2012-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-06
  • 2014-06-03
相关资源
最近更新 更多