将数据从一个np.array传输到另一个

时间:2019-03-28 22:52:14

标签: python numpy

我想将数据从一个numpy数组传输到另一个数组,同时消除一些数据。我想我可以过滤数据,但是我无法将其传输到另一个numpy数组中。我用np.zeros创建了第二个数组,我认为它是正确的形状,但是出现错误,

    onesd_prob_combinetest=np.zeros([star_number,1])
    for counter, value in enumerate(one_d_arrays):
         for index, element in enumerate(value):
             onesd_prob_combinetest[counter] = value[index]
             if sum(onesd_prob_combinetest) > 
                           sixty_eight_percenttest[counter]:
             break

sixty_eight_percenttest是以下数组[0.07326831 0.08325579 1.63425504 0.76375927]。我想将总计上述68%的值添加到新数组中。

我收到此错误消息...

onesd_prob_combinetest [计数器] =值[索引] ValueError:无法将输入数组从形状(5295974)广播到形状(1)

我已经尝试这样做约36个小时,只是不知道该怎么做。如果有人可以告诉我如何操作,我将不胜感激。

我不确定使用numpy数组是否可以做到这一点。我需要某种方式使行中的数据彼此分开。

    Arrays are as follows  onesd_prob_combinetest:
    array([[0.],
          [0.],
          [0.],
          [0.]])

下一个数组可能看起来很奇怪。这是一个二维的numpy数组,我将其切成单个数组,认为这样会更容易处理。

    one_d_arrays
    [array([[0.0002739 , 0.00027299, 0.00027292, ..., 0.        , 0.        ,
    0.        ]]), array([[0.00091127, 0.00090518, 0.00089081, ..., 0.        , 0.        ,
    0.        ]]), array([[0.0012387 , 0.00123697, 0.0012369 , ..., 0.        , 0.        ,
    0.        ]]), array([[0.00141058, 0.00141006, 0.00141002, ..., 0.        , 0.        ,
    0.        ]])]

1 个答案:

答案 0 :(得分:0)

我想我找到了解决方法。

如果我用嵌套列表替换numpy目标数组,它似乎可以工作!

我也将one_d-arrays改回了原来的2d数组,而不是数组。

也许有更好的方法来做到这一点,但我设法做到了。

非常感谢您尝试帮助我。

如果您有其他选择,请告诉我。最好的祝福。

    onesd_prob_combinetest= [[] for _ in range(star_number)]

    for counter, value in enumerate(one_d_arrays):
        for index, element in enumerate(value):
            onesd_prob_combinetest[counter].append(element)
            if sum(onesd_prob_combinetest[counter]) > sixty_eight_percenttest[counter]:
                 break