【发布时间】:2021-10-24 13:59:33
【问题描述】:
我想将向量分配给一个 numpy 数组以方便使用布尔索引。它奏效了,直到我遇到了一个角落案例。最小的工作示例:
a = np.array([None] * 2)
b = [np.ones(shape=[1, 3]), np.ones(shape=[2, 4])]
a[True, True] = b # Works as intended
print(a)
但是,当所有数组都是 1D 时,我得到一个错误:
a = np.array([None] * 2)
b = [np.ones(shape=[1, 3]), np.ones(shape=[1, 4])] # shape of second array changed!
a[True, True] = b # ValueError: cannot copy sequence with size 2 to array axis with dimension 1
有什么办法可以避免这种情况吗? (我检查了 numpy 版本 v1.19.5 和 v1.21.1)
【问题讨论】:
-
这似乎是一种无意的行为。一种可行的解决方法是分配一个 [0] 一个扁平数组,然后对其进行整形并重新分配。
-
np.array(b)是做什么的? -
在第二种情况下,它们仍然是二维数组。
标签: python arrays numpy boolean