Python 在特定位置合并单个阵列
我刚学了python 我想问一下Ndarray numpy的事 例如,我有Python 在特定位置合并单个阵列,python,numpy,Python,Numpy,我刚学了python 我想问一下Ndarray numpy的事 例如,我有 a=np.array([3,2,3,9]) 如何使用循环复制a。 像这样 array([[3, 3, 3], [2, 2, 2], [3, 3, 3], [9, 9, 9]]) 我试过了 import numpy as np a = np.array([3, 2, 3, 9]) k = 3 for i in range(k): z = np.concatenate(
a=np.array([3,2,3,9])
如何使用循环复制a
。
像这样
array([[3, 3, 3],
[2, 2, 2],
[3, 3, 3],
[9, 9, 9]])
我试过了
import numpy as np
a = np.array([3, 2, 3, 9])
k = 3
for i in range(k):
z = np.concatenate((a, a), axis=0)
print(z)
尝试将
广播到:
import numpy as np
a = np.array([3, 2, 3, 9])
k = 3
print(np.broadcast_to(a, (k, 4)).T)
# array([[3, 3, 3],
# [2, 2, 2],
# [3, 3, 3],
# [9, 9, 9]])
有很多方法可以做到这一点。对于学习者来说,它们都是有教育意义的
另一个答案中建议的broadcasating
应该很快,但可能有点难以理解
遵循您的连接线索:
In [301]: a = np.array([3, 2, 3, 9])
In [302]: np.concatenate([a,a,a])
Out[302]: array([3, 2, 3, 9, 3, 2, 3, 9, 3, 2, 3, 9])
In [303]: np.concatenate([a,a,a]).reshape(3,4)
Out[303]:
array([[3, 2, 3, 9],
[3, 2, 3, 9],
[3, 2, 3, 9]])
In [304]: np.concatenate([a,a,a]).reshape(3,4).T
Out[304]:
array([[3, 3, 3],
[2, 2, 2],
[3, 3, 3],
[9, 9, 9]])
或者,由于要垂直排列值:
In [306]: a[:,None]
Out[306]:
array([[3],
[2],
[3],
[9]])
In [307]: a[:,None].repeat(3,1)
Out[307]:
array([[3, 3, 3],
[2, 2, 2],
[3, 3, 3],
[9, 9, 9]])
另一种方式:
In [308]: np.outer(a,np.ones(3,int))
Out[308]:
array([[3, 3, 3],
[2, 2, 2],
[3, 3, 3],
[9, 9, 9]])
或者在广播中使用外部:
In [309]: a[:,None]*np.ones(3,int)
Out[309]:
array([[3, 3, 3],
[2, 2, 2],
[3, 3, 3],
[9, 9, 9]])
用列表重复:
In [311]: np.concatenate([a[:,None]]*3, axis=1)
Out[311]:
array([[3, 3, 3],
[2, 2, 2],
[3, 3, 3],
[9, 9, 9]])
如果我使用循环呢?你需要使用Python循环吗?本机NumPy函数比它们的Python等价物快得多(它们是用C语言执行的)