在numpy数组python中的每个元素之后添加元素

时间:2020-02-22 14:51:34

标签: python arrays numpy insert element

我只是从numpy开始,正在尝试创建一个接受数组(x)的函数,将其转换为np.array,并返回一个numpy数组,每个数组之后都添加0,0,0,0元件。

它看起来应该像这样:

输入数组:[4,5,6]

输出:[4,0,0,0,0,5,0,0,0,0,6,0,0,0,0]

我尝试了以下操作:

select
    app_id,
    count(*) filter(where event_type = 'store_app_view') app_views,
    count(*) filter(where event_type = 'store_app_install' or event_type = 'store_app_view' and lead_event_type = 'store_app_download') app_installs
    count(*) filter(where event_type = 'store_app_install' or event_type = 'store_app_view' and lead_event_type = 'store_app_download')
        / count(*) filter(where event_type = 'store_app_View') app_conversion_rate

from (
    select
        e.*,
        lead(event_type) over(partition by user_id order by event_type) lead_event_type
    from events_db e
) t
group by app_id

返回:

   import numpy as np
   x = np.asarray([4,5,6])
   y = np.array([])
   for index, value in enumerate(x):
        y = np.insert(x, index+1, [0,0,0,0])
        print(y)

因此,基本上我需要将输出合并到一个单独的numpy数组中,而不是三个列表中。

有人知道如何解决吗?

非常感谢!

2 个答案:

答案 0 :(得分:3)

使用numpy .zeros函数!

import numpy as np

inputArray = [4,5,6]

newArray = np.zeros(5*len(inputArray),dtype=int)
newArray[::5] = inputArray

实际上,您“强制”索引为0.5和10的所有值变为4,5和6。

所以_____ [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]

成为[4 0 0 0 0 5 0 0 0 0 0 6 0 0 0 0]

>>> newArray
array([4, 0, 0, 0, 0, 5, 0, 0, 0, 0, 6, 0, 0, 0 ,0])

答案 1 :(得分:3)

我没有用numpy解决这个问题,但是这段代码似乎返回了您所需的输出:

a = [4,5,6]
b = [0,0,0,0]
c = []
for x in a:
   c = c + [x] + b
print(c)

我希望这会有所帮助!