我有一个大小为x=(8000,2)的变量x。我想选择每100个位置的值,即(0,99,198,297…),并应用第二个循环,将该值乘以100次,并将其保存在列表中,因此在两个循环结束时,我有一个大小为(8000,2)的变量
功能代码是:
num_data = 8000
x_data = []
x_data.append(np.random.uniform(high=-1, low=1,size=(num_data, 2)))
x_data=np.asarray(x_data)
K= np.random.uniform(high=-1, low=1, size=(2, 2))
ys=[Obs_x0]
for i in range (80):
Obs_x0 = x_data[:,i*99]
traj=[Obs_x0]
for j in range(99):
Obs_x0 = np.matmul(Obs_x0, K)
traj.append(Obs_x0)
ys.append(traj)
ys=np.asarray(ys)
print(ys.shape)
当我运行它时,ys(7921,)
的形状应该是ys(8000,2)
。我认为问题在于代码没有从第一个循环中附加Obs_x0
有什么办法吗>
在for循环前将ys
留空->ys=[]
.
第二个循环中的范围错误:range(99)
从0-98
计数。你想要的可能是range(100
),它从0-99
开始计数。
import numpy as np
num_data = 8000
x_data = []
x_data.append(np.random.uniform(high=-1, low=1, size=(num_data, 2)))
x_data = np.asarray(x_data)
print(x_data.shape)
K = np.random.uniform(high=-1, low=1, size=(2, 2))
ys = []
for i in range(80):
Obs_x0 = x_data[:, i * 99]
traj = [Obs_x0]
for j in range(100):
Obs_x0 = np.matmul(Obs_x0, K)
ys.append(Obs_x0)
ys = np.asarray(ys)
print(ys.shape)