在numpy的另一个数组中使用条件求和数组

时间:2017-02-18 03:03:35

标签: python arrays numpy

我有以下python代码来汇总具有另一个数组中的条件的数组

np.where(lower_bounds>0, histo1,0).sum()

我认为numpy等价物是var map = L.map('map').setView([-36.60664, -72.10342], 4); map.options.minZoom = 4; map.options.maxZoom = 18; L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', { attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors' }).addTo(map); var LeafIcon = L.Icon.extend({ options: { //shadowUrl: 'leaf-shadow.png', iconSize: [30, 30], //shadowSize: [50, 64], iconAnchor: [22, 94], //shadowAnchor: [4, 62], popupAnchor: [-3, -76] } }); var myIcon = new LeafIcon({iconUrl: 'http://icons.veryicon.com/128/System/Small%20%26%20Flat/map%20marker.png'}); L.marker([-33.4247, -70.67877], {icon: myIcon}).bindPopup("Parque Fluvial Renato Poblete").addTo(map); 但是numpy方法将histo1中的所有内容相加(忽略了lower_bounds&gt; 0的要求)。为什么?或者还有另一种方法吗?感谢。

1 个答案:

答案 0 :(得分:0)

好的,这无疑是猜测,但我能想到的唯一解释是np.where(lower_bounds>0, histo1,0).sum()返回全部金额

  • 您使用的是Python2
  • lower_bounds是一个列表,而不是数组

在Python2上:

[1, 2] > 0
True

意味着你的numpy行将广播它的第一个参数并始终从histo1中选择,而不是从0中选择。注意,评论histo1[lower_bounds>0].sum()中建议的替代公式也不起作用(它将返回{{1在这种情况下。

解决方案。将lower_bounds显式转换为数组

histo1[1]

顺便说一下。在Python3上你会得到一个异常

 np.where(np.array(lower_bounds)>0, histo1, 0)