【问题标题】:How to get a numpy array from values of another array (Python)如何从另一个数组的值中获取一个 numpy 数组(Python)
【发布时间】:2019-11-15 12:46:48
【问题描述】:

我有数组

[[ 430  780 1900  420][ 0 0 2272 1704]]

并需要将其转换成这个结果:

[[[ 430  780 1] [1900  420 1]] [[ 0  0 1] [2272  1704 1]]]

基本上将2d数组转换为3d,将每个数组分成2并附加数字1。我怎样才能实现它?

【问题讨论】:

  • 这在很大程度上取决于您的拆分标准。根据您想要的输出,您将分成两半的数组,数组中奇数个项目的输出应该是什么?奇数项应该在第一个数组还是第二个数组中?或者这只是一个非常具体的案例,不需要一概而论?另外,到目前为止,您尝试过什么?

标签: python arrays numpy matrix


【解决方案1】:

正如 cmets 中所指出的,这个问题对于更大的数组会发生什么情况有些模糊,但获得您所指出的结果的一种方法是:

import numpy as np

a = np.array([[430, 780, 1900, 420], [0, 0, 2272, 1704]])
b = a.reshape(a.shape[0], -1, 2)
b = np.concatenate([b, np.ones_like(b[..., -1:])], -1)
print(b)
# [[[ 430  780    1]
#   [1900  420    1]]
# 
#  [[   0    0    1]
#   [2272 1704    1]]]

【讨论】:

    【解决方案2】:

    试试这个,对于小型数组(对于大型数组,请考虑@jdehesa 答案)。

    >>> arr = [[ 430, 780, 1900, 420],[ 0, 0, 2272, 1704]]
    
    >>> [[[a[0],a[1],1],[a[2],a[3],1]] for a in arr]
    
    [[[430, 780, 1], [1900, 420, 1]], [[0, 0, 1], [2272, 1704, 1]]]
    

    【讨论】:

      猜你喜欢
      • 2021-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-10
      • 2015-02-28
      • 2017-09-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多