【问题标题】:How to split a 1d numpy array into a multidimensional array如何将一维 numpy 数组拆分为多维数组
【发布时间】:2020-03-16 12:26:09
【问题描述】:

我有一个 numpy 数组,它是一维的,但每个元素都包含数字和字母。我想拆分每个元素,以便获得所需的特定数字。代码如下:

    my_array = [' profile    : (   99.27,    99.19)   20.82      1.75    4.40    0.86    22.05\n'
    ' profile    : (   99.80,    99.04)   22.82      1.00    5.02    0.79    33.88\n'  
    ' sersic    : (  100.15,    99.59)   25.23      1.79    4.00    0.58   -53.98\n'
    ' sersic    : (  100.31,    99.45)   18.97     10.22    3.00    0.35   -73.86\n']

如上例所示,我的代码认为我的数组有 4 个元素。我想拆分每个元素,以便我可以得到第 3、第 4 和第 5 个数字(所以在这个例子中,我想得到 20.82、1.75、4.40、22.82、1、5.02 等......)。

有没有办法做到这一点?

【问题讨论】:

  • 你为什么要使用数组来开始?

标签: python arrays numpy split


【解决方案1】:

您可以使用列表推导来遍历行并拆分以将它们分解为子字符串,然后选择您想要的值(从那时起似乎更容易)并将它们转换为浮点数:

my_array = [
' profile    : (   99.27,    99.19)   20.82      1.75    4.40    0.86    22.05\n',
' profile    : (   99.80,    99.04)   22.82      1.00    5.02    0.79    33.88\n',  
' sersic    : (  100.15,    99.59)   25.23      1.79    4.00    0.58   -53.98\n',
' sersic    : (  100.31,    99.45)   18.97     10.22    3.00    0.35   -73.86\n'
]

matrix = [ list(map(float,line.split()[-5:-2])) for line in my_array]

输出:

print(matrix)

[
  [20.82, 1.75, 4.4], 
  [22.82, 1.0, 5.02], 
  [25.23, 1.79, 4.0], 
  [18.97, 10.22, 3.0]
]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-10
    • 2022-07-12
    • 2023-02-03
    相关资源
    最近更新 更多