我的輸入資料框:
F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16
F1 1.0 1.0 1.0 1.0 1.0 1.0 0.0 1.0 0.0 0.0 0.0 1.0 1.0 0.0 1.0 1
F2 1.0 1.0 1.0 0.0 1.0 0.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 0.0 0.0 1
F3 0.0 1.0 1.0 1.0 0.0 1.0 1.0 0.0 1.0 0.0 0.0 1.0 1.0 1.0 1.0 1
F4 0.0 0.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 0.0 1.0 1.0 1.0 1.0 0
F5 0.0 0.0 0.0 1.0 1.0 1.0 1.0 1.0 0.0 1.0 1.0 0.0 0.0 1.0 1.0 1
F6 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 1.0 1.0 1.0 1.0 1.0 0.0 1.0 1
F7 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 0.0 1
F8 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 0
F9 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1
F10 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 1.0 1.0 1
F11 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 1.0 1.0 1
F12 0.0 0.0 0.0 1.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 1.0 1.0 1
F13 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 1
F14 0.0 0.0 0.0 0.0 0.0 1.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 1.0 0.0 1
F15 0.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 1.0 0
F16 0.0 0.0 1.0 0.0 0.0 1.0 1.0 1.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1
我想應用此代碼:
m = df2.to_numpy()
mask = m * m[:, np.newaxis, :].transpose((0,2,1))
bol = mask.any(axis=1)
final = m | bol
但在這final一步我得到這個錯誤:
TypeError:輸入型別不支持 ufunc 'bitwise_or',并且根據轉換規則 ''safe'' 無法安全地將輸入強制轉換為任何支持的型別
請告訴我錯誤在哪里?
uj5u.com熱心網友回復:
m是一個浮點陣列,A | B如果不是兩個陣列都是布爾型別,則不能直接執行操作。
假設您想將0/1視為False/ True,請使用:
m = df2.to_numpy().astype(bool)
要么
final = m.astype(bool)|bol
如果您只需要final而不需要中間體,那么盡早轉換為布林值會更有效。
輸出為整數:
final = (m.astype(bool)|bol).astype(int)
或者,如果早期轉換m為布林值:
# m = df2.to_numpy().astype(bool)
# ...
final = (m|bol).astype(int)
uj5u.com熱心網友回復:
將陣列的值轉換m為布林值以映射1/0到True/False:
final = m.astype(bool) | bol
print (final)
[[ True True True True True True True True True True True True
True True True True]
[ True True True True True True True True True True True True
True True True True]
[ True True True True True True True True True True True True
True True True True]
[ True True True True True True True True True True True True
True True True True]
[False True True True True True True True True True True True
True True True True]
[ True True True True True True True True True True True True
True True True True]
[ True True True True True True True True True True True True
True True True True]
[ True True True True True True True True True True True True
True True True True]
[ True True True True True True True True True True True True
True True True True]
[ True True True True True True True True True True True True
True True True True]
[ True True True True True True True True True True True True
True True True True]
[False True True True True True True True True True True True
True True True True]
[ True True True True True True True True True True True True
True False True True]
[ True False True True True True True True True True True True
True True True True]
[ True True True True True True True True True True True True
True True True True]
[False True True True False True True True True True True True
True True True True]]
最后轉換為整數:
final = (m.astype(bool) | bol).astype(int)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/439821.html
