我有一个大小为(150,2)的矩阵,我想将每行复制N次。我用一个例子来说明我的意思。
输入:
a = [[2, 3], [5, 6], [7, 9]]
假设N=3,我想要这个输出:[[2 3]
[2 3]
[2 3]
[5 6]
[5 6]
[5 6]
[7 9]
[7 9]
[7 9]]
谢谢。
我有一个大小为(150,2)的矩阵,我想将每行复制N次。我用一个例子来说明我的意思。
输入:
a = [[2, 3], [5, 6], [7, 9]]
假设N=3,我想要这个输出:[[2 3]
[2 3]
[2 3]
[5 6]
[5 6]
[5 6]
[7 9]
[7 9]
[7 9]]
谢谢。
使用参数axis=0
的np.repeat
:
a = np.array([[2, 3],[5, 6],[7, 9]])
print(a)
[[2 3]
[5 6]
[7 9]]
r_a = np.repeat(a, repeats=3, axis=0)
print(r_a)
[[2 3]
[2 3]
[2 3]
[5 6]
[5 6]
[5 6]
[7 9]
[7 9]
[7 9]]
atleast_2d
。a = np.atleast_2d([2, 3]).repeat(repeats=3, axis=0)
print(a)
# [[2 3]
# [2 3]
# [2 3]]
在NumPy中创建一个空的多维数组(例如,一个2D数组m*n用于存储矩阵),如果您不知道要添加多少行并且不关心Stephen Simmons提到的计算成本(即在每次添加时重新构建数组),则可以将要附加到的维度压缩为0:X = np.empty(shape=[0, n])
。
这样,您就可以使用例如(这里m = 5
,我们假设在创建空矩阵时不知道,而n = 2
):
import numpy as np
n = 2
X = np.empty(shape=[0, n])
for i in range(5):
for j in range(2):
X = np.append(X, [[i, j]], axis=0)
print X
这将给你:
[[ 0. 0.]
[ 0. 1.]
[ 1. 0.]
[ 1. 1.]
[ 2. 0.]
[ 2. 1.]
[ 3. 0.]
[ 3. 1.]
[ 4. 0.]
[ 4. 1.]]
a
应该是a = [[2, 3], [5, 6], [7, 9]]
。 - Warren Weckesser