用零替换python数组中的Nones

use*_*454 1 python numpy matplotlib nonetype map-function

我刚刚加入了两个不等长的数组和命令:

allorders = map(None,todayorders, lastyearorders)
Run Code Online (Sandbox Code Playgroud)

其中"none"给出今天的订单没有值(因为今天的数组不是那么长).

但是,当我尝试将allorders数组传递到matplotlib条形图时:

 p10= plt.bar(ind, allorders[9],   width, color='#0000DD', bottom=allorders[8])
Run Code Online (Sandbox Code Playgroud)

..我收到以下错误:

TypeError: unsupported operand type(s) for +=: 'int' and 'NoneType'
Run Code Online (Sandbox Code Playgroud)

那么,matplotlib有没有办法接受无数据类型?如果没有,如何在我的allorders数组中用零替换'Nones'?

如果你可以,因为我是一个Python新手(来自R社区),请提供从头到尾的详细代码,我可以使用/测试.

Jay*_*Jay 8

使用numpy:

import numpy as np
allorders = np.array(allorders)
Run Code Online (Sandbox Code Playgroud)

由于 None,这会创建一个对象数组。我们可以用零替换它们:

allorders[allorders == None] = 0
Run Code Online (Sandbox Code Playgroud)

然后将数组转换为正确的类型:

allorders.astype(int)
Run Code Online (Sandbox Code Playgroud)


Mar*_*ers 6

使用列表理解:

allorders = [i if i[0] is not None else (0, i[1]) for i in allorders]
Run Code Online (Sandbox Code Playgroud)