【发布时间】:2020-12-06 21:55:01
【问题描述】:
假设:
A=np.array([1,2,0,-4])
B=np.array([1,1,1,1])
C=np.array([1,2,3,4])
通过精美的索引,我可以在 A > 0 的地方为 C 分配一个标量值。
C[A > 0]= 1
但是无论如何在 A > 0 的地方获得像 C = B/A 这样的东西,同时通过花哨的索引保留 A
C[A > 0] = B/A
我收到如下错误:
<input>:1: RuntimeWarning: divide by zero encountered in true_divide
Traceback (most recent call last):
File "<input>", line 1, in <module>
ValueError: NumPy boolean array indexing assignment cannot assign 4 input values to the 2 output values where the mask is true
我可以通过 for 循环或复制 A & C where 来获得结果:
D = np.copy(A)
E = np.copy(C)
D[ D <= 0]= 1
E=B/A
E[A <=0] = C
或在哪里设置 C=Run(A,B)
def Run(A,B):
C=np.zeros(A.shape[0],A.shape[1])
for i in range(len(A)):
if A[i] != O:
C[i] = A[i]/B[i]
else:
C[i] = C[i]
但我只是想知道如果我循环数百万次,是否有更直接的方法来做到这一点而无需添加这么多步骤。谢谢。
【问题讨论】:
标签: python numpy indexing numpy-ndarray