【发布时间】:2021-12-06 06:04:41
【问题描述】:
考虑以下(Nx1) 数组:
a = [[1]
[2]
[3]
[4]
[5]]
如何从a 生成(NxN) 数组?例如N = 5:
a = [[1 1 1 1 1]
[2 2 2 2 2]
[3 3 3 3 3]
[4 4 4 4 4]
[5 5 5 5 5]]
【问题讨论】:
考虑以下(Nx1) 数组:
a = [[1]
[2]
[3]
[4]
[5]]
如何从a 生成(NxN) 数组?例如N = 5:
a = [[1 1 1 1 1]
[2 2 2 2 2]
[3 3 3 3 3]
[4 4 4 4 4]
[5 5 5 5 5]]
【问题讨论】:
如果要复制值,可以使用np.repeat:
>>> np.repeat(a, len(a), 1)
array([[1, 1, 1, 1, 1],
[2, 2, 2, 2, 2],
[3, 3, 3, 3, 3],
[4, 4, 4, 4, 4],
[5, 5, 5, 5, 5]])
否则,您应该使用np.broadcast_to 执行广播并用视图包装a:
>>> np.broadcast_to(a, (len(a),)*2)
array([[1, 1, 1, 1, 1],
[2, 2, 2, 2, 2],
[3, 3, 3, 3, 3],
[4, 4, 4, 4, 4],
[5, 5, 5, 5, 5]])
【讨论】:
你可以这样做:
a = [[1], [2], [3], [4], [5]]
out = []
for el in a:
out.append(el * len(a))
return out
如果在开头计算一次'a'列表的长度会更好。
【讨论】:
生成二维数组的pythonic one liner
a = [[1], [2], [3], [4], [5]]
N = 5
x = [i * N for i in a]
来源:
【讨论】: