我想對一個矩陣的所有行求和n x 2,因此,如果我有一個矩陣,結果應該是一個1 x 2所有行相加的向量。我可以做類似的事情,np.sum( arg, axis=1 )但如果我提供一個向量作為引數,我會得到一個錯誤。是否有更通用的 sum 函式在提供向量時不會引發錯誤?注意:這在 MATLAB 中從來都不是問題。
背景:我寫了一個函式來計算矩陣的所有行的一些東西和總和。根據輸入的數量,矩陣有不同的行數,行數為>= 1
uj5u.com熱心網友回復:
你可以做
np.sum(np.atleast_2d(x), axis=1)
如有必要,這將首先將向量轉換為單維二維矩陣。
uj5u.com熱心網友回復:
根據 numpy.sum檔案,您不能指定axis=1向量,因為您會得到一個 numpyAxisError說法axis 1 is out of bounds for array of dimension 1。
例如,一種可能的解決方法是撰寫一個專用函式,在執行求和之前檢查大小。請在下面找到一個可能的實作:
import numpy as np
M = np.array([[1, 4],
[2, 3]])
v = np.array([1, 4])
def sum_over_columns(input_arr):
if len(input_arr.shape) > 1:
return input_arr.sum(axis=1)
return input_arr.sum()
print(sum_over_columns(M))
print(sum_over_columns(v))
以更pythonic的方式(不一定更易讀):
def oneliner_sum(input_arr):
return input_arr.sum(axis=(1 if len(input_arr.shape) > 1 else None))
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/316894.html
