小编Kin*_*gle的帖子

将一系列 xarray.DataArray 转换为 numpy 数组

在此输入图像描述在此输入图像描述我正在使用一个名为 PySD 的包进行系统动力学建模。PySD 将模型从 Vensim(系统动力学建模包)转换为 Python,并允许用户用比 Vensim 更复杂的例程替换各种方程。我正在运行一个具有各种下标的模型,这会创建一种不寻常的输出格式。输出被读入数据帧,其下标元素的各个值最终为 xarray.DataArrays。我想知道如何获取 xarray.DataArrays 的列(最终成为一个系列)并将其转换为二维数组,第二个维度是下标的数量。

import pysd
import numpy as np

model=pysd.load("Example.py")
stocks=model.run
pop=np.array(Population) #Creates an object array
Population=stocks.Populaton #Creates a series

#How to get an array of population values for each country?
Run Code Online (Sandbox Code Playgroud)

example.py代码如下(请记住这是一个任意示例来说明问题)

from __future__ import division
import numpy as np
from pysd import utils
import xarray as xr

from pysd.functions import cache
from pysd import functions

_subscript_dict = {
    'Country': ['Canada', 'USA', 'China', 'Norway', 'India', 'England', 
'Mexico', 'Yemen']
}

_namespace = { …
Run Code Online (Sandbox Code Playgroud)

python numpy systemdynamics python-xarray

3
推荐指数
1
解决办法
1万
查看次数

如何基于python中另一个列表中的元素过滤列表

我有一个大约62,000个数字的列表A,另一个大约370,000个列表B。我想过滤B,使其只包含来自A的元素。我尝试过这样的事情:

A=[0,3,5,73,88,43,2,1]
B=[0,5,10,42,43,56,83,88,892,1089,3165]
C=[item for item in A if item in set(B)] 
Run Code Online (Sandbox Code Playgroud)

哪个可行,但是对于这么大的列表显然很慢,因为(我认为吗?)搜索会遍历整个B,即使已经在B中找到了该元素也是如此。因此脚本正在遍历370,000个元素的列表62,000次。

A和B中的元素是唯一的(B包含0到700,000之间的唯一值的列表,而A包含这些值的唯一子集),因此一旦在B中找到A [i],搜索就可以停止。值也按升序排列(如果有任何意义)。

有什么办法可以更快地做到这一点?

python list filter

3
推荐指数
1
解决办法
59
查看次数

np.where 返回元组列表的空索引

谁能告诉我如何修复以下代码?np.where 应该返回索引 0。

import numpy as np
listoftups=[("a", "b"), ("n"), ("c","d","e"), ("f", "g")]
np.where(listoftups==("a", "b"))
Run Code Online (Sandbox Code Playgroud)

python numpy

-1
推荐指数
1
解决办法
362
查看次数

标签 统计

python ×3

numpy ×2

filter ×1

list ×1

python-xarray ×1

systemdynamics ×1