当前位置: 首页 > 知识库问答 >
问题:

Python的numpy中“zip()”的等价物是什么?

沈飞翼
2023-03-14

我尝试使用numpy阵列执行以下操作:

x = [(0.1, 1.), (0.1, 2.), (0.1, 3.), (0.1, 4.), (0.1, 5.)]
normal_result = zip(*x)

这应该给出一个结果:

normal_result = [(0.1, 0.1, 0.1, 0.1, 0.1), (1., 2., 3., 4., 5.)]

但如果输入向量是numpy数组:

y = np.array(x)
numpy_result = zip(*y)
print type(numpy_result)

它(预期)返回一个:

<type 'list'>

问题是,在此之后,我需要将结果转换回numpy数组。

我想知道的是,如果有一个有效的numpy函数可以避免这些来回的转换,那该怎么办?

共有2个答案

阚乐湛
2023-03-14

尝试使用dstack:

>>> from numpy import *
>>> a = array([[1,2],[3,4]]) # shapes of a and b can only differ in the 3rd dimension (if present)
>>> b = array([[5,6],[7,8]])
>>> dstack((a,b)) # stack arrays along a third axis (depth wise)
array([[[1, 5],
        [2, 6]],
       [[3, 7],
        [4, 8]]])

因此,在您的情况下,它将是:

x = [(0.1, 1.), (0.1, 2.), (0.1, 3.), (0.1, 4.), (0.1, 5.)]
y = np.array(x)
np.dstack(y)

>>> array([[[ 0.1,  0.1,  0.1,  0.1,  0.1],
    [ 1. ,  2. ,  3. ,  4. ,  5. ]]])
宰父夕
2023-03-14

你可以把它转置...

>>> a = np.array([(0.1, 1.), (0.1, 2.), (0.1, 3.), (0.1, 4.), (0.1, 5.)])
>>> a
array([[ 0.1,  1. ],
       [ 0.1,  2. ],
       [ 0.1,  3. ],
       [ 0.1,  4. ],
       [ 0.1,  5. ]])
>>> a.T
array([[ 0.1,  0.1,  0.1,  0.1,  0.1],
       [ 1. ,  2. ,  3. ,  4. ,  5. ]])
 类似资料:
  • 我仍然在学习和试验JavaFX中的GUIs,我似乎无法得到我所希望的“外观”…我试图在一个面板中分组几个标签,然后在另一个面板中添加另一个标签。但我似乎不知道如何在JavaFX中正确使用“JPanels”? 如有任何帮助,将不胜感激 编辑:这是我试图通过尝试不同的布局来实现的,但运气仍然不好

  • 在Mac和Windows上,可以使用 <罢工> (替换 )和 (替换 ) (Docker 18.03+)位于容器内。 对于Linux来说,有没有一个可以在不传递env变量或使用各种CLI命令提取它的情况下开箱即用的方法?

  • 我们有以下场景:使用Sonarqube扫描Windows10中的两个项目。 null 提前谢了。

  • 我尝试使用以下R语句,并使用NumPy将其转换为Python: 有与which()等价的Python吗?这里,x是矩阵tmp中的行,k对应于另一个矩阵中的列数。 之前,我尝试了以下Python代码,并收到一个值错误(操作数无法与形状一起广播):

  • 像C/C、C#、Java、JavaScript和Pascal(参考)这样的编程语言结合了和语句(有时也称为或),允许您根据多个条件检查一个值以执行某些操作。 伪代码,用于描述-构造的特殊语法 了解字典查找等功能等价物后,是否存在与上述编程构造完全相同的语法等价物?

  • 我看到Kotlin有,它们相当于Java中的。 现在我想知道,是否有等价于Java的?