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:具有多个元素的数组的真值不明确。请使用.any()或.all()
以及如何使用矢量化这个thx
7条答案
按热度按时间6tdlim6h1#
我认为您需要矢量化函数
np.where
:但如果只需要转换为
0
和1
,则holdenweb solution更好。如果需要转换为其他标量,如
5
和10
或a
和b
,则np.where
更好:型
时间:
wvt8vs2t2#
标准的
numpy
广播可用于将每个元素与标量值进行比较,为每个元素生成布尔值,然后ndarray.astype
方法将True
值转换为1,将False
值转换为零。bpzcxfmw3#
fquxozlt4#
你的代码的问题是A[i]的维数,A被初始化为矩阵[1,n](1行n列--在np.array()中有两个括号),所以类型A[i]的引用实际上意味着“整个第i行,或者一个数组我对python和numpy还很陌生,但是访问单个单元格并将每个单元格设置为1或0可以这样编写(当然,只有在这里你被迫使用FOR循环的情况下):
但是,最好的解决方案,正如上面所描述的,无疑是避免for循环。
lnlaulya5#
23c0lvtd6#
您可以使内置的
round
函数元素明智地使用np.vectorize
。gz5pxeao7#
现在你有了1和-1。如果你在原始数组中没有0,你可以把-1转换成0,这样数组就只有1和0了:
结果是:
型
阵列(1.,1.,1.,1.,1.,0.,1.,1.,0.,0.,1.,1.,0.,1.,0.,1.,0.,0.,1.,1.,1.,0.,1.,0.,1.,1.,0.,1.,0.,1.,0.,0.,1.,0.,0.,0.,1.,0.,1.,0.,0.,1.,0.,1.,0.,1.,0.,0.,1.,0.,1.,0.,1.,0.,1.,0.,1.,0.,1.,0.,1.,0.,1.,0.,1.,0.,1.,1.,0.,1.,1.,0.,1.,1.,0.,1.,1.,0.,1.,1.,1.,1.,1 1.、0.、0.、1.、0.、1.、0.、0.、1.、1.、0.)