gpt4 book ai didi

python - 将 "zero-columns"替换为 numpy 数组中的值

转载 作者:行者123 更新时间:2023-12-01 05:28:59 25 4
gpt4 key购买 nike

好吧,已经晚了,我无法再解决最简单的问题了:

我有一个带有“零列”的矩阵,这些列应该替换为

来自具有相同列数的另一个数组(相同列索引)的值:

a=np.array([[2,0,0,0],[1,0,2,0],[1,0,5,0]])
b=np.array([0.3,0.4,0.6,0.8])

结果应该是:

c=np.array([[2,0.4,0,0.8],[1,0.4,2,0.8],[1,0.4,5,0.8]])

我尝试过:

#searches for an entire zero-column indexes
wildcard_cols = np.nonzero(a.sum(axis=0) == 0)

我得到:

out: wildcard_cols=array([[1, 3]], dtype=int64)# that is right

然后我想从此输出中获取一个列表以迭代列表中的项目

wildcard_cols=np.asarray(wildcard_cols)
wildcard_cols=wildcard_cols.tolist()

但是我得到了一个列表中的列表(?) 输出=[[1, 3]]

所以我不能这样做:

for item in wildcard_cols:
a[:,item]=b[item]
#this does not work because i want to change every value in the column

我可能想得很复杂,但也许有人找到一个快速的解决方案......

最佳答案

IIUC,怎么样:

>>> a = np.array([[2,0,0,0],[1,0,2,0],[1,0,5,0]])*1.0
>>> b = np.array([0.3,0.4,0.6,0.8])
>>> wild = (a == 0).all(axis=0)
>>> c = a.copy()
>>> c[:,wild] = b[wild]
>>> c
array([[ 2. , 0.4, 0. , 0.8],
[ 1. , 0.4, 2. , 0.8],
[ 1. , 0.4, 5. , 0.8]])

关于python - 将 "zero-columns"替换为 numpy 数组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20736283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com