gpt4 book ai didi

python - 从python中的n个子数组副本创建一个数组

转载 作者:太空宇宙 更新时间:2023-11-03 14:27:28 25 4
gpt4 key购买 nike

是否有更有效的方法(或至少是 pythonic)来堆叠子数组的 n 个副本以创建新数组?

import numpy as np

x = np.arange(4)
for i in range(n-1):
x = hstack((x,arange(4)))

谢谢,

最佳答案

In [34]: x = np.arange(4)

In [35]: np.tile(x,(3,1))
Out[35]:
array([[0, 1, 2, 3],
[0, 1, 2, 3],
[0, 1, 2, 3]])

但要小心——您可以使用 broadcasting而不是一遍又一遍地复制同一行。

例如,假设您有一些形状为 (3,4) 的数组:

In [40]: y = np.arange(12).reshape(3,4)

In [41]: y
Out[41]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])

这是你的x:

In [42]: x = np.arange(4)

In [43]: x
Out[43]: array([0, 1, 2, 3])

您可以添加x(其形状为(4,))和y(其形状为(3,4 )),NumPy 会自动“广播”x 到形状 (3,4):

In [44]: x + y
Out[44]:
array([[ 0, 2, 4, 6],
[ 4, 6, 8, 10],
[ 8, 10, 12, 14]])

比较结果

In [45]: np.tile(x,(3,1)) + y
Out[45]:
array([[ 0, 2, 4, 6],
[ 4, 6, 8, 10],
[ 8, 10, 12, 14]])

如您所见,无需先tile x。事实上,通过平铺x,您可以节省内存。

关于python - 从python中的n个子数组副本创建一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17946394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com