如何将1D numpy数组元素转换为新的1D numpy数组?

2024-09-27 23:24:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有nnumpy1d数组ì_0 = [i00, i01, i02, ...]i_1 = [i10, i11, i12, ...]。。。并希望将这些值放入m新的1D数组o_0 = [i00, i10, 120, ...]o_1 = [i01, i11, i21, ...]。。。其中m是等长数组i_0i_1。我如何才能尽可能地实现这一点(在o_0o_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_0o_1o_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])

Tags: 数据示例np数组arrayi01cd8cd9
1条回答
网友
1楼 · 发布于 2024-09-27 23:24:34

首先是一个问题:为什么元素明智?您想在从输入阵列到输出阵列的过程中对每个点执行操作吗?如果是这样,您或者需要简单地在输入数组上循环,或者使用python的yield(可能节省工作内存)。或者,如果可能,您可以将步骤包含到单个函数中,以矢量化操作,从而一次性(按元素)在完整的numpy数组上执行

编辑:

在本例中(您的具体示例),这实际上非常简单,因为您可以将输入数组合并到单个矩阵中,例如:

input = np.vstack([i_0, i_1])

现在简单地变换矩阵,以获得结果:

result = input.T

要再次从向量中提取数组,可以按如下方式解压缩

o_1, o_2 = result    # 2 output arrays for input arrays, each of 2 elements

您可以使用python列表理解或类似工具来为实际具有更多输入/输出向量的矩阵执行此操作


这个答案是针对您的情况的,但希望能够演示numpy数组如何在单个调用(或几个调用)中执行操作,而不是像C/C++这样迭代每个元素的语言。在幕后,这就是numpy为您所做的(实际上是在C中),因此您可以在python中获得类似C的性能。如果您熟悉低级语言,那么在使用numpy时可能需要改变您的思维方式

相关问题 更多 >

    热门问题