Arrays I';我试图将列表理解用于numpy数组,在numpy数组中生成一个生成器表达式。为什么?

Arrays I';我试图将列表理解用于numpy数组,在numpy数组中生成一个生成器表达式。为什么?,arrays,numpy,list-comprehension,generator-expression,Arrays,Numpy,List Comprehension,Generator Expression,所以我正在编写一些代码,这些代码将部署在raspberry pi上。由于raspberry pi的计算限制,以及它在这一特定用途(图像捕获和处理)中所采取的一系列步骤,我认为最好尽可能使用列表理解来代替for循环。我设法创建了一条语句,该语句生成了一个文件数组(名称+路径),如果它起作用的话: self.dark\u file\u names=np.array([(os.path.join)(self.dark\u frames\u path, 如果line.endswith(“.npy\n”)

所以我正在编写一些代码,这些代码将部署在raspberry pi上。由于raspberry pi的计算限制,以及它在这一特定用途(图像捕获和处理)中所采取的一系列步骤,我认为最好尽可能使用列表理解来代替for循环。我设法创建了一条语句,该语句生成了一个文件数组(名称+路径),如果它起作用的话:

self.dark\u file\u names=np.array([(os.path.join)(self.dark\u frames\u path, 如果line.endswith(“.npy\n”)]),则os.walk(self.dark\u frames\u path)中的root、dirs和文件的line.strip(“\n”))

然而,我在ipython中尝试了一种变化:

stdin, stdout, stderr= ssh.exec_command('ls')

l=[line.strip('\n') for line in stdout if line.strip('\n').endswith(".py")] 
dark_file_names=np.array([(os.path.join(dark_frames_path,line.strip(“\n”))用于根目录、目录、文件中的文件。如果line.endswith(“.py””),则用于文件中的行,则为walk(dark_frames_path))

这就是输出:

array([<generator object <genexpr> at 0x7f14d4412888>], dtype=object)

ssh是paramiko.SSHClient()实例。

列表理解是一个循环;略快于显式等价物,但速度不是很快。由于它的语法,有些事情更难做,甚至不可能。还需要将其转换为一个数组;为什么不把它列为一个清单呢?另一个抱怨是——它不可读。仅仅通过阅读很难区分不同版本之间的区别。我必须将它们复制到编辑器中,并对其进行编辑以确保可读性。您知道替换列表理解的
[]
可以将其转换为生成器表达式吗?围绕
os.path.join(…)
()
的作用是什么?嘿,谢谢。我发现了问题所在。我忘记的部分是关于整个函数的(),部分是换行符序列/当我使用paramiko在ssh上运行这些命令时,n是必需的,因为其中一个函数的返回值,出于某种原因,我把它留在了那里。对于未来的观众来说,这是一个有效的版本,
self.dark\u file\u names=np.array([os.path.join(self.dark\u frames\u path,line))用于os.walk(self.dark\u frames\u path)中的root、dirs和文件如果line.endswith(“.npy”)]),这将创建一个包含所有numpy文件的数组