我只是从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数组中,而不是三个列表中。
有人知道如何解决吗?
非常感谢!
答案 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)
我希望这会有所帮助!