假设一个向量,它的项可以从一个有限的集合中获取值(例如[7, 8, 9]
)。我试图搜索满足某些要求的向量。
我使用numpy数组来存储向量项的可能状态。一开始我的向量是不确定的,看起来像这样
>>> A = np.tile([7, 8, 9], (3, 1))
>>> A
array([[7, 8, 9],
[7, 8, 9],
[7, 8, 9]])
我的算法通过减少每个单元的可能状态来工作(这里不涉及算法的细节)。例如,如果我想声明第一项只能是9
,那么它工作得很好,这要归功于second broadcasting rule:
但是,如果我想声明该项不能是8
,并尝试将[7, 9]
分配给它:
>>> A[1] = [7, 9]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: cannot copy sequence with size 2 to array axis with dimension 3
我想在这里实现的是某种大小调整,它会自动将值填充到所需的长度,例如[7, 9, 9]
或{set(A[1]) == {7, 9}
。在
有没有可能用numpy自动调整大小?在
有一些低级操作根据需要重复数组项。它们不常用。}出现在脑海中,但是它们在一个平坦的数组上工作,并且需要布尔掩码。但是
np.put
和{resize
可能在这里起作用:它甚至适用于更大的阵列:
^{pr2}$我没用过
resize
,也不知道它的局限性或怪癖。在把这种行为看作是“广播”是令人困惑的。它扩展了一些非常具体的规则,这些规则对程序和用户有效,因为它们是明确的。在
相关问题 更多 >
编程相关推荐