我有一個NumPy
陣列A
與形狀(m,n)
,並希望通過運行一些功能f
所有元素。對於非恆定功能,例如f(x) = x
或f(x) = x**2
廣播完美無缺,並返回預期結果。對於f(x) = 1
,應用功能,以我的數組A
不過才返回標 1.如何獲得持續的功能,以保持形狀與NumPy
有沒有辦法迫使廣播,以保持形狀,即在這種情況下返回1秒的陣列?
我有一個NumPy
陣列A
與形狀(m,n)
,並希望通過運行一些功能f
所有元素。對於非恆定功能,例如f(x) = x
或f(x) = x**2
廣播完美無缺,並返回預期結果。對於f(x) = 1
,應用功能,以我的數組A
不過才返回標 1.如何獲得持續的功能,以保持形狀與NumPy
有沒有辦法迫使廣播,以保持形狀,即在這種情況下返回1秒的陣列?
F(x) = 1
是不是你需要創建一個函數def
或lambda
並返回1.然後用np.vectorize
應用陣列上的功能的功能。
>>> import numpy as np
>>> f = lambda x: 1
>>>
>>> f = np.vectorize(f)
>>>
>>> f(np.arange(10).reshape(2, 5))
array([[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1]])
使用x.fill(1)
。確保正確回擊fill
不返回一個新的變量,它會修改x
這聽起來像np.ones_like
工作,或np.full_like
在一般情況下:
def f(x):
result = np.full_like(x, 1) # or np.full_like(x, 1, dtype=int) if you don't want to
# inherit the dtype of x
if result.shape == 0:
# Return a scalar instead of a 0D array.
return result[()]
else:
return result
我們並不真正需要對於一個像這樣簡單的情況來說,可以將'np.vectorize'的性能命中。 – user2357112
@ user2357112這是一種情況,因爲OP提到的功能可能有不同的結構。 – Kasramvd