如何在Python中从(N×1)数组生成(N×N)数组
嘿,这个需求很直观,我给你两种实用的解决方案,分别适配纯Python列表和numpy数组的场景:
方法一:纯Python列表实现
如果你的数组是普通的Python列表结构,用列表推导式就能轻松搞定,代码简洁又易懂:
a = [[1], [2], [3], [4], [5]] n = len(a) # 自动获取N的值,不用硬编码 result = [row * n for row in a] print(result)
原理很简单:row * n会把每个子列表里的元素重复n次,比如[1] * 5就会变成[1, 1, 1, 1, 1],遍历原数组的每一行处理后,就得到了你要的N×N数组。
方法二:用numpy库实现(更适合数值计算场景)
如果是做数据分析或者数值计算,用numpy会更高效,推荐两种方式:
import numpy as np a = np.array([[1], [2], [3], [4], [5]]) n = a.shape[0] # 方式1:利用numpy的广播特性横向拼接 result = np.hstack([a] * n) # 方式2:用tile函数直接重复数组 result = np.tile(a, (1, n)) print(result)
np.hstack是把多个相同的数组横向堆叠在一起;np.tile则是指定重复的次数,(1, n)表示纵向不重复,横向重复n次,两种方式都能得到你想要的N×N形状的数组,特别适合处理大规模数值数据。
内容的提问来源于stack exchange,提问作者Aim
相关产品推荐
相关产品推荐

