我有一个循环for
,在每次迭代中生成一个新的向量(100,)
。所以代码循环喜欢
for i in range (10):
for j in range (4):
#Create a new vector (100,)
#Concatenate 4 vector together to make (400,) #400=4*10
#Append the concatenation vectors (400,) in vertical to make (10,400) array
我的期望是生成一个(10,400)
的矩阵大小,用于连接这些循环中的向量
目前,我的解决方案是
matrix_= np.empty([10,400])
for i in range (10):
vector_horz=[]
for j in range (4):
#Create a new vector (100,)
vector_rnd=#Random make a vector/list with size of (100,1)
#Concatenate 4 vector together to make (400,) #400=4*10
vector_horz.append(vector_rnd)
#Append the concatenation vectors (400,) in vertical to make (10,400) array
matrix_(:,i)=vector_horz
但是,它说matrix
和vector_horz
的大小无法分配。你能给我另一个解决方案吗?
答案 0 :(得分:3)
选项1
(推荐)首先生成数据并在最后创建一个数组:
data = []
for i in range(10):
for j in range(4):
temp_list = ... # random vector of 100 elements
data.extend(temp_list)
arr = np.reshape(data, (10, 400))
选项2
或者,使用np.empty
初始化一个空数组,并一次指定一个切片:
arr = np.empty((10, 400))
for i in range(10):
for j in range(4):
temp_list = ...
arr[i, j * 100 : (j + 1) * 100] = temp_list