gpt4 book ai didi

python - 将 numpy 数组转换为 0 或 1

转载 作者:太空狗 更新时间:2023-10-29 17:09:47 47 4
gpt4 key购买 nike

A = np.array([[0.94366988, 0.86095311, 0.88896715, 0.93630641, 0.74075403, 0.52849619
, 0.03094677, 0.85707681, 0.88457925, 0.67279696, 0.26601085, 0.4823794
, 0.74741157, 0.78575729, 0.00978911, 0.9203284, 0.02453695, 0.84884703
, 0.2050248, 0.03703224, 0.92931392, 0.11930532, 0.01411064, 0.7832698
, 0.58188015, 0.66897565, 0.75119007, 0.01323558, 0.03402649, 0.99735115
, 0.21031727, 0.78123225, 0.6815842, 0.46647604, 0.66323375, 0.03424828
, 0.08031627, 0.76570656, 0.34760863, 0.06177743, 0.6987531, 0.4106426
, 0.6648871, 0.02776868, 0.93053125, 0.46395717, 0.23971605, 0.9771735
, 0.66202407, 0.10482388]])

将 a 的条目转换为 0(如果激活 <= 0.5)或 1(如果激活 > 0.5)

for i in range(A.shape[1]):
if A[i]>0.5:
Y_prediction[i] = 1
else:
Y_prediction[i] = 0

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

以及如何使用向量化这个谢谢

最佳答案

我认为你需要向量化函数 np.where :

B = np.where(A > 0.5, 1, 0)
print (B)
[[1 1 1 1 1 1 0 1 1 1 0 0 1 1 0 1 0 1 0 0 1 0 0 1 1 1 1 0 0 1 0 1 1 0 1 0 0
1 0 0 1 0 1 0 1 0 0 1 1 0]]

B = np.where(A <= 0.5, 0, 1)
print (B)
[[1 1 1 1 1 1 0 1 1 1 0 0 1 1 0 1 0 1 0 0 1 0 0 1 1 1 1 0 0 1 0 1 1 0 1 0 0
1 0 0 1 0 1 0 1 0 0 1 1 0]]

但如果只需要转换为 01,则 holdenweb solution 更好。

如果需要转换为其他标量,如 np.where510ab 更好:

C = np.where(A > 0.5, 5, 10)
print (C)
[[ 5 5 5 5 5 5 10 5 5 5 10 10 5 5 10 5 10 5 10 10 5 10 10 5
5 5 5 10 10 5 10 5 5 10 5 10 10 5 10 10 5 10 5 10 5 10 10 5
5 10]]

D = np.where(A > 0.5, 'a', 'b')
print (D)
[['a' 'a' 'a' 'a' 'a' 'a' 'b' 'a' 'a' 'a' 'b' 'b' 'a' 'a' 'b' 'a' 'b' 'a'
'b' 'b' 'a' 'b' 'b' 'a' 'a' 'a' 'a' 'b' 'b' 'a' 'b' 'a' 'a' 'b' 'a' 'b'
'b' 'a' 'b' 'b' 'a' 'b' 'a' 'b' 'a' 'b' 'b' 'a' 'a' 'b']]

时间:

np.random.seed(223)
A = np.random.rand(1,1000000)

#jez
In [64]: %timeit np.where(A > 0.5, 1, 0)
100 loops, best of 3: 7.58 ms per loop

#holdenweb
In [65]: %timeit (A > 0.5).astype(int)
100 loops, best of 3: 3.47 ms per loop

#stamaimer
In [66]: %timeit element_wise_round(A)
1 loop, best of 3: 318 ms per loop

关于python - 将 numpy 数组转换为 0 或 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45648668/

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