【发布时间】:2021-07-15 11:47:30
【问题描述】:
我有一个 for 循环,它为循环中的每个条目提供 16 x 8 2D 数组的输出。我想将所有这些 2D 数组沿 z 轴堆叠在 3D 数组中。这样,我可以确定 z 轴上的方差。我尝试了多个命令,例如循环内外的 np.dstack、matrix3D[p,:,:] = ... 和 np.newaxis。然而,我最接近我想要的输出只是重复堆叠在一起的最后一个数组。尺寸也很差。我需要保留原来的 16 x 8 格式。到目前为止,我有点太深了,可以在正确的方向使用一些轻推!
我的代码:
excludedElectrodes = [1,a.numberOfColumnsInArray,a.numberOfElectrodes-a.numberOfColumnsInArray+1,a.numberOfElectrodes]
matrixEA = np.full([a.numberOfRowsInArray, a.numberOfColumnsInArray], np.nan)
for iElectrode in range(a.numberOfElectrodes):
if a.numberOfDeflectionsPerElectrode[iElectrode] != 0:
matrixEA[iElectrode // a.numberOfColumnsInArray][iElectrode % a.numberOfColumnsInArray] = 0
for iElectrode in range (a.numberOfElectrodes):
if iElectrode+1 not in excludedElectrodes:
"""Preprocessing"""
# Loop over heartbeats
for p in range (1,len(iLAT)):
# Calculate parameters, store them in right row-col combo (electrode number)
matrixEA[iElectrode // a.numberOfColumnsInArray][iElectrode % a.numberOfColumnsInArray] = (np.trapz(abs(correctedElectrogram[limitA[0]:limitB[0]]-totalBaseline[limitA[0]:limitB[0]]))/(1000))
# Stack all matrixEA arrays along z axis
matrix3D = np.dstack(matrixEA)
【问题讨论】:
-
对于循环的每次迭代,二维数组是否具有相同的形状?此外,使用
[i,j]进行索引,而不是[i][j],因为这会将数组切片两次。 -
是的,它们具有相同的 16 x 8 形状,它必须是这种形状,因为它与我用来获取测量值的阵列上的电极位置相对应。感谢您的反馈,我已经对其进行了更改,并且确实效果更好。
标签: numpy multidimensional-array