【发布时间】:2018-04-10 14:04:24
【问题描述】:
我在 python 中有一个 numpy 数组,名为 my_values,大小为 5x5,还有一个 numpy 向量,其中包含大小为 1x90(5 False,85 True)naned cols_indexes 的布尔值。我想扩展我的初始数组my_values,在等于False 的cols_indexes 的位置索引中使用零。因此,最后我的转换矩阵my_values 的大小应该为 5x90(85 个新列填充为零)。一个使用数组而不是布尔向量的简单示例是:
def insert_one_per_row(arr, mask, putval):
mask_ext = np.column_stack((mask, np.zeros((len(mask), 1), dtype=bool)))
out = np.empty(mask_ext.shape, dtype=arr.dtype)
out[~mask_ext] = arr.ravel()
out[mask_ext] = putval
return out
y = np.arange(25).reshape(5, 5)
x = np.array([[False, True, False, False, False],
[False, True, False, False, False],
[False, True, False, False, False],
[False, True, False, False, False],
[False, True, False, False, False]], dtype=bool)
arr = insert_one_per_row(y, x, putval=0)
此示例适用于布尔数组。但是在我的情况下,x 是一个向量而不是一个数组。 x 包含 True 用于我需要添加的位置的新列和 False 用于最终数组位置的现有列。如何使用向量 x 而不是矩阵 x 插入新列?
【问题讨论】:
-
见stackoverflow.com/questions/5064822/… 结论是周围有方法,但最好从一个尽可能大的数组开始,并根据需要填写值。
-
在我的情况下有必要做相反的事情,因为我需要处理没有零的矩阵。
-
发生了。像docs.scipy.org/doc/numpy/reference/generated/… 这样的堆栈函数是否无法满足您的需求?
-
您的问题可能有误?您写道,您希望在“等于 False 的 cols_indexes 的位置索引”中使用零,但有 5 个 False,而不是 85 个。
-
是的,我的意思正好相反。我编辑了问题。