【发布时间】:2018-09-25 04:08:30
【问题描述】:
我正在尝试创建一个尺寸为 (101, 2, 1000) 的 3d 张量。我不得不将我找到的 R 代码翻译成 python,但问题是 r 从 1 开始迭代,而 python 在 0 开始迭代。
下面有没有办法解决这个问题?
提前致谢!
df1 = pd.DataFrame(np.random.rand(1000, 2), columns=['Col1', 'Col2'])
a = np.array(df1)
a_stdnorm = stats.norm.ppf(a)
n_rows = a.shape[0]
n_cols = a.shape[1]
samples = 100
if samples % 2 == 0:
samples = samples + 1 # force an odd number
samples_increment = samples - 1 # to cater for 1 based indices
tensor = np.zeros((samples, n_cols, n_rows))
sum_col = a[:,0] + a[:,1]
sort = np.argsort(sum_col)
block_half = samples // 2
start = 0
end = start + samples_increment
for n in range(n_rows):
if (n + 1) - block_half > 0 and n + block_half <= n_rows:
start = n - block_half
end = start + samples_increment
dx = sort[start:end]
data = a_stdnorm[dx,:]
tensor[:,:,sort[n]] = data
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-50-1b371b208d20> in <module>()
22 dx = sort[start:end]
23 all_data = a_stdnorm[dx,:]
---> 24 tensor[:,:,sort[n]] = all_data
ValueError: could not broadcast input array from shape (100,2) into shape (101,2)
【问题讨论】:
标签: python arrays loops sorting iterator