我有一個 numpy.ndarray 格式如下:
array([[ 0., 0., 0., 0.],
[ 0., 1., 0., 0.],
[ 0., 1., 0., 0.],
...,
[ 1., 0., 0., 1.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.]])
我想對XOR每一行的元素應用邏輯運算子。即我想要如下格式的輸出:
[[0.],
[1.],
[1.],
...,
[1],
[0],
[0]]
我怎樣才能在 Python 中做到這一點?我知道np.logical_xor但我不知道如何有效地使用它。
謝謝 !!!
uj5u.com熱心網友回復:
使用.reduce:
import numpy as np
arr = np.array([[0., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 1., 0., 0.],
[1., 0., 0., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]])
res = np.logical_xor.reduce(arr, 1).astype(np.int32)
print(res)
輸出
[0 1 1 0 0 0]
該函式np.logical_xor是一個 ufunc,因此它有 4 個方法,來自檔案(重點是我的):
所有 ufunc 都有四種方法。但是,這些方法僅對采用兩個輸入引數并回傳一個輸出引數的標量 ufunc 有意義。嘗試在其他 ufunc 上呼叫這些方法將導致 ValueError。類reduce 方法都采用axis 關鍵字、dtype 關鍵字和out 關鍵字,并且陣列的維數都必須>= 1。
要沿軸應用 ufunc,請使用.reduce:
通過沿一個軸應用 ufunc,將陣列的維數減少一。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/355847.html
