小编Eka*_* AW的帖子

在Python中映射数组的好方法是什么?

我有一个旧的遗留Fortran代码,将从Python调用.

在此代码中,数据数组由某种算法计算.我简化了它:假设我们有10个元素要继续(在实际应用中它通常是10e + 6而不是10):

number_of_elements = 10
element_id_1 = [0, 1, 2, 1, 1, 2, 3, 0, 3, 0] # size = number_of_elements
element_id_2 = [0, 1, 2]                      # size = max(element_id_1)
Run Code Online (Sandbox Code Playgroud)

然后按如下方式使用这些数组:

my_element = one_of_my_10_elements # does not matter where it comes from
my_element_position = elt_position_in_element_id_1 # does not matter how
id_1 = element_id_1[my_element_position]
if id_1 == 0:
   id_2 = None
else:
   id_2 = element_id_2[id_1-1]
   modify(my_element, some_other_data[id_2])
Run Code Online (Sandbox Code Playgroud)

什么是Pythonic/numpy管理这种关系的方式,即获得id_2给定元素?

我已经看过掩盖的阵列,但我还没有找到一种方法来使用它们进行这种配置.为元素实现一个类,id_2它将在计算后存储并稍后提供它,这让我想到与数组操作相比非常差的计算时间.我错了吗?

UPD.遗留代码中当前完成的更大范例:

import numpy as np
number_of_elements …
Run Code Online (Sandbox Code Playgroud)

python numpy

5
推荐指数
1
解决办法
150
查看次数

列出来自不同文件的子类

让我们考虑一个应用程序,其中有一个基类 Move 及其变体 Walk 和 Run。我想将它们分成不同的类。我还希望能够从基类中获取可能的动作列表。就像是:

模块 1:

class Move(object): pass
Run Code Online (Sandbox Code Playgroud)

模块 2:

from module1 import Move
class Walk(Move): pass
Run Code Online (Sandbox Code Playgroud)

主要脚本:

from module1 import *
from module2 import *
print Move.__subclasses__()
Run Code Online (Sandbox Code Playgroud)

如果没有这两个导入行,main将不会返回任何子类。这似乎是预期的行为。

我希望将来能够添加更多的运动模块,而无需修改现有的源代码。

我正在考虑发现并导入给定目录中的所有 python 文件,类似于此处所做的操作:Python __subclasses__() notlisting subclasses

有没有更干净的方法来完成这样的任务?

python module subclass

5
推荐指数
1
解决办法
2119
查看次数

标签 统计

python ×2

module ×1

numpy ×1

subclass ×1