如何扩展或 "scale up" 一维数组?
How to Expand or "scale up" an 1d array?
我有一段 C 代码只能处理大小为 20 的数组。我的仪器输出的数组比函数需要的数组小得多。是否有 numpy 或数学函数可以在保持其结构完整性的同时将数组“放大”到任何特定大小?例如:
我有一个 8 元素数组,基本上是两个斜坡“锯齿”,意思是它的值是:
[1 2 3 4 1 2 3 4]
我需要的 C 代码是一个包含 20 个元素的数组。所以我可以通过用 "0"s 填充原始数组的线性间隔来缩放它,比如:
[1,0,0,2,0,0,3,0,0,4,0,0,1,0,0,2,0,0,3,0]
所以它加起来有 20 个元素。我认为这个过程与“抽取”相反。 (抱歉,我正在简化这个过程,这样它会更容易理解)
根据您的示例,我想可以调整以下方法来执行您想要的操作:
- 带 0 的上采样:
upsampled_l = [[i, 0, 0] for i in l]
,l
是您的初始列表
- 使用来自的方法展平数组
flat_l = flatten(upsampled_l)
How to make a flat list out of a list of lists?例如
- 获取期望长度
final_l = flat_l[:20]
例如,以下代码给出了您在示例中提供的输出:
l = [1, 2, 3, 4, 1, 2, 3, 4]
upsampled_l = [[i, 0, 0] for i in l]
flat_l = [item for sublist in upsampled_l for item in sublist]
final_l = flat_l[:20]
但是,最终列表中缺少初始列表的最后一个元素(第二个 4)。也许值得在两者之间只用一个 0 进行上采样([i, 0]
而不是 [i, 0, 0]
),最后做 final_l.extend([0 for _ in range(20 - len(final_l))])
.
希望对您有所帮助!
您可以在 one-liner 中管理它,方法是添加零作为另一个轴,然后展平:
sm = np.array([1, 2, 3, 4, 1, 2, 3, 4])
np.concatenate([np.reshape(sm, (8, 1)), np.zeros((8, 3))], axis=1).flatten()
我有一段 C 代码只能处理大小为 20 的数组。我的仪器输出的数组比函数需要的数组小得多。是否有 numpy 或数学函数可以在保持其结构完整性的同时将数组“放大”到任何特定大小?例如:
我有一个 8 元素数组,基本上是两个斜坡“锯齿”,意思是它的值是: [1 2 3 4 1 2 3 4]
我需要的 C 代码是一个包含 20 个元素的数组。所以我可以通过用 "0"s 填充原始数组的线性间隔来缩放它,比如:
[1,0,0,2,0,0,3,0,0,4,0,0,1,0,0,2,0,0,3,0]
所以它加起来有 20 个元素。我认为这个过程与“抽取”相反。 (抱歉,我正在简化这个过程,这样它会更容易理解)
根据您的示例,我想可以调整以下方法来执行您想要的操作:
- 带 0 的上采样:
upsampled_l = [[i, 0, 0] for i in l]
,l
是您的初始列表 - 使用来自的方法展平数组
flat_l = flatten(upsampled_l)
How to make a flat list out of a list of lists?例如 - 获取期望长度
final_l = flat_l[:20]
例如,以下代码给出了您在示例中提供的输出:
l = [1, 2, 3, 4, 1, 2, 3, 4]
upsampled_l = [[i, 0, 0] for i in l]
flat_l = [item for sublist in upsampled_l for item in sublist]
final_l = flat_l[:20]
但是,最终列表中缺少初始列表的最后一个元素(第二个 4)。也许值得在两者之间只用一个 0 进行上采样([i, 0]
而不是 [i, 0, 0]
),最后做 final_l.extend([0 for _ in range(20 - len(final_l))])
.
希望对您有所帮助!
您可以在 one-liner 中管理它,方法是添加零作为另一个轴,然后展平:
sm = np.array([1, 2, 3, 4, 1, 2, 3, 4])
np.concatenate([np.reshape(sm, (8, 1)), np.zeros((8, 3))], axis=1).flatten()