我有n
numpy1d数组ì_0 = [i00, i01, i02, ...]
,i_1 = [i10, i11, i12, ...]
。。。并希望将这些值放入m
新的1D数组o_0 = [i00, i10, 120, ...]
,o_1 = [i01, i11, i21, ...]
。。。其中m
是等长数组i_0
,i_1
。我如何才能尽可能地实现这一点(在o_0
、o_1
、。。。阵列)
考虑此示例输入数据{{CD8>}(上行),^ {CD9>}
import numpy as np
i_0 = np.array([1.0, 2, 3])
i_1 = np.array([1.1, 2.1, 3.1])
应将其转换为m=3
输出o_0
、o_1
和o_2
o_0 = np.array([1.0, 1.1])
o_1 = np.array([2.0, 2.1])
o_2 = np.array([3.0, 3.1])
或放入2D数组o
o = np.array([[1.0, 1.1], [2.0, 2.1], [3.0, 3.1]])
这相当于
o = np.array([o_0, o_1, o_2])
首先是一个问题:为什么元素明智?您想在从输入阵列到输出阵列的过程中对每个点执行操作吗?如果是这样,您或者需要简单地在输入数组上循环,或者使用python的
yield
(可能节省工作内存)。或者,如果可能,您可以将步骤包含到单个函数中,以矢量化操作,从而一次性(按元素)在完整的numpy数组上执行编辑:
在本例中(您的具体示例),这实际上非常简单,因为您可以将输入数组合并到单个矩阵中,例如:
现在简单地变换矩阵,以获得结果:
要再次从向量中提取数组,可以按如下方式解压缩:
您可以使用python列表理解或类似工具来为实际具有更多输入/输出向量的矩阵执行此操作
这个答案是针对您的情况的,但希望能够演示
numpy
数组如何在单个调用(或几个调用)中执行操作,而不是像C/C++这样迭代每个元素的语言。在幕后,这就是numpy为您所做的(实际上是在C中),因此您可以在python中获得类似C的性能。如果您熟悉低级语言,那么在使用numpy时可能需要改变您的思维方式相关问题 更多 >
编程相关推荐