【问题标题】:How to transform numpy array into numpy array of tuples?如何将 numpy 数组转换为 numpy 元组数组?
【发布时间】:2021-12-18 07:04:00
【问题描述】:

如果我有一个 numpy 数组 np.array([1,2,3]),则在 Python numpy 中。如何将其转换为 numpy 数组 [(1,1), (2,4), (3,9)]

【问题讨论】:

  • 改造要求是什么?我推断每个元组都是基本乘法;但必须明确说明要求。此外,您自己尝试过什么?
  • 你真的需要一个元组向量(即对象类型)吗?
  • 指定所需结果的shapedtype。您的显示不明确,看起来更像是一个元组列表,而不是一个数组。列表和数组的区别很重要!
  • 为什么不使用二维数组而不是一维元组数组?!!

标签: python arrays list numpy tuples


【解决方案1】:

这将起作用:

list(zip(a, a*a))

【讨论】:

    【解决方案2】:

    这可能是一种幼稚的方法,但它仍然有效。

    lst = np.array([1,2,3])
    array = []
    for i in lst:
        array.append(tuple((i, i*i)))
    dt=np.dtype('int,int')
    arr = np.array(array,dtype=dt)
    print(arr)
    print(type(arr))
    

    它会输出 NumPy 数组

    [(1, 1), (2, 4), (3, 9)]
    

    【讨论】:

    • 为了完整起见,请显示print(repr(arr))
    • 可能有一些更好的方法,但这种方法适用于那些想用 for 循环做所有事情的人:D
    【解决方案3】:

    使用推导,如果 na 是任何 numpy 整数数组(如您的示例中的那个):

    result = np.array( [(i, i*i) for i in na], dtype=[('a','<i4'),('b','<i4')] )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-03
      • 2021-06-09
      • 1970-01-01
      相关资源
      最近更新 更多