小编Don*_*ong的帖子

比较ntype对象的numpy数组

我的问题是"为什么?:"

aa[0]
array([[405, 162, 414, 0,
        array([list([1, 9, 2]), 18, (405, 18, 207), 64, 'Universal'],
      dtype=object),
        0, 0, 0]], dtype=object)

aaa
array([[405, 162, 414, 0,
        array([list([1, 9, 2]), 18, (405, 18, 207), 64, 'Universal'],
      dtype=object),
        0, 0, 0]], dtype=object)

np.array_equal(aaa,aa[0])
False
Run Code Online (Sandbox Code Playgroud)

那些数组完全相同.

我的最小例子不会重现这个:

be=np.array([1],dtype=object)

be
array([1], dtype=object)

ce=np.array([1],dtype=object)

ce
array([1], dtype=object)

np.array_equal(be,ce)
True
Run Code Online (Sandbox Code Playgroud)

这也不是:

ce=np.array([np.array([1]),'5'],dtype=object)

be=np.array([np.array([1]),'5'],dtype=object)

np.array_equal(be,ce)
True
Run Code Online (Sandbox Code Playgroud)

但是,为了重现我的问题,试试这个:

be=np.array([[405, 162, 414, 0, np.array([list([1, 9, 2]), 18, (405, 18, 207), 64, 'Universal'],dtype=object),0, 0, 0]], dtype=object)

ce=np.array([[405, 162, 414, 0, np.array([list([1, …
Run Code Online (Sandbox Code Playgroud)

python numpy python-3.x

7
推荐指数
1
解决办法
1005
查看次数

蟒蛇lambda可以用来改变另一个函数的内部工作吗?

我有以下代码片段,我需要(大规模)加速.它是非常低效的.

possible_combos.append([comb for comb in
    itertools.combinations_with_replacement(input_list, target_number_of_packages)
        if np.sum([j[1] for j in comb])==target_number_of_packages])
Run Code Online (Sandbox Code Playgroud)

拆解:

possible_combos 
Run Code Online (Sandbox Code Playgroud)

是输出

input_list
Run Code Online (Sandbox Code Playgroud)

是一个元组列表([...],number_of_packages)

target_number_of_packages
Run Code Online (Sandbox Code Playgroud)

是我需要达到的包数.我可以根据需要组合列表"input_list"的多个元素(允许重复),但是在添加"number_of_packages"时需要准确到达target_number_of_packages,否则组合无效.

我在考虑类似的事情

possible_combos.append([comb for comb in
    itertools.combinations_with_replacement(input_list, lambda x:x=...)))
Run Code Online (Sandbox Code Playgroud)

但无法填补空白.

我的问题是,是否可以这样使用lambda?我不需要如何处理这个特定用例的答案,因为我已经解决了不同的问题(使用itertools产品作为递归生成器函数),但我仍然想知道,是否有解决方案?

简而言之:是否有可能使用lambda来改变另一个函数内的值对飞

问题的最小例子:

input_list=[1,2,3,4,5,6] #in minmal form

target_number_of_packages=4

possible_combos should be [[1,1,1,1],[2,1,1],[2,2],[3,1],[4]]
Run Code Online (Sandbox Code Playgroud)

我正在寻找大致相当于,但速度快于的东西,

possible_combos=[comb for comb in
    itertools.combinations_with_replacement(input_list) if np.sum(comb)==target_number_of_packages]
Run Code Online (Sandbox Code Playgroud)

只需将np.sum(comb)== target放入itertools.combinations_with_replacement中 - 如果可能的话.

我已经改变了这个问题,因为我以不同的方式解决了潜在的问题,但其中的一部分仍然是我想知道的.由于没有答案,我认为编辑是适当的.

python lambda python-3.x

6
推荐指数
1
解决办法
236
查看次数

PyQT5程序仅在第一次编译运行时返回错误

以下示例在新的ipython控制台(spyder)中运行时返回“ -1”,但仅在第一次尝试时返回。之后,它似乎工作正常。

from PyQt5 import QtWidgets, QtGui, QtCore

from GUI import Ui_MainWindow  # importing our generated file

import sys
import numpy as np

class mywindow(QtWidgets.QMainWindow):

    def __init__(self):

        super(mywindow, self).__init__()

        self.ui = Ui_MainWindow()

        self.ui.setupUi(self)

app = QtCore.QCoreApplication.instance()
if app is None:
    app = QtWidgets.QApplication(sys.argv)

application = mywindow()

application.show()

sys.exit(app.exec())
Run Code Online (Sandbox Code Playgroud)

错误如下:

> runfile('C:/Users/xxx.py',wdir ='C:/ Users / xx / Documents / 3dPackaging')发生异常,请使用%tb查看完整的追溯。

系统退出:-1

C:\ Users \ xx \ Documents \ Anaconda \ lib \ site-packages \ IPython \ core \ interactiveshell.py:2969:UserWarning:要退出:请使用“退出”,“退出”或Ctrl-D。警告(“退出:使用'退出','退出'或Ctrl-D。”,堆栈级别= 1)

%tb追溯(最近一次通话): …

python compiler-errors spyder pyqt5

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

标签 统计

python ×3

python-3.x ×2

compiler-errors ×1

lambda ×1

numpy ×1

pyqt5 ×1

spyder ×1