2024-10-19 16:22:47 发布
网友
a = np.arange(4).reshape(2, 2) a [[0, 1] [2, 3]] a[ a==[0, 1] ][0] = 1
应为a = [[1, 1], [2, 3]],但“a”没有更改。是什么导致了这个问题。谢谢
a = [[1, 1], [2, 3]]
如果你查看a==[0, 1],你会发现它返回一个
a==[0, 1]
array([[False, True], [False, False]])
已经有了。所以你只需要:
a = np.arange(4).reshape(2, 2) a[a==[0,1]]=1 a # array([[1, 1], # [2, 3]])
这里的问题是您试图分配给数组的副本,而不是视图,因此ndarray保持不变。你知道吗
ndarray
一种方法是使用^{}:
replace_with = np.vstack([np.ones(a.shape[0]), a[:,1]]) np.where((a==[0,1]).all(1)[:,None], replace_with, a) array([[1., 1.], [2., 3.]])
这里的replace_with是一个ndarray,第一列是1,第二列是a的内容,因为这似乎就是你想要做的:
replace_with
a
print(replace_with) array([[1., 1.], [1., 3.]])
如果你查看
a==[0, 1]
,你会发现它返回一个已经有了。所以你只需要:
这里的问题是您试图分配给数组的副本,而不是视图,因此
ndarray
保持不变。你知道吗一种方法是使用^{} :
这里的
replace_with
是一个ndarray
,第一列是1,第二列是a
的内容,因为这似乎就是你想要做的:相关问题 更多 >
编程相关推荐