麻木
首先,我在下面定義了“x”和函式“example”:
import numpy as np
x=np.arange(1,4,1)
def example(d):
return 2*d
在這個簡單的例子中,如果我將“x”放入“example”中,
y=example(x)
我得到“y”,它的長度與 x 相同,我可以快速計算。
但是,如果我將 example2 定義如下,
def example2(d):
matrix=np.array([[d,0],[0,d])
return matrix
并在example2中輸入“x”,
y2=example2(x)
我得到的是
[[array([1, 2, 3]) 0]
[0 array([1, 2, 3])]]
<ipython-input-9-21f94eb7b4f4>:2: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray
matrix=np.array([[d,0],[0,d]])
還有一個警告。
我真的很想創建一個 ndarray(或串列),它在每個術語中包含一個矩陣而不使用“for”。如果我使用“追加”,我可以做到這一點,但完成計算需要更長的時間。
A1=np.array([[1,0],[0,1]])
A2=np.array([[2,0],[0,2]])
A3=np.array([[3,0],[0,3]])
y3=np.array([A1,A2,A3])
如果我將在 example2 中創建的每個矩陣命名為 A1、A2、A3,我想要做的是通過在我創建的函式中輸入“x”來創建 y3。
有什么解決辦法嗎?
uj5u.com熱心網友回復:
不遵循但:
import numpy as np
x=np.arange(1,4,1)
def example(d):
return 2*d
y=example(x)
print(y)
def example2(d):
matrix=np.array([[d,0],[0,d]], dtype= object)
return matrix
y2=example2(x)
print('\n___________________________')
print(y2)
給出:
[2 4 6]
___________________________
[[array([1, 2, 3]) 0]
[0 array([1, 2, 3])]]
所以沒有錯誤,不確定這是你要找的,只需發布??你想要的輸出來幫助其他人幫助你
uj5u.com熱心網友回復:
您可以初始化所需形狀的陣列,并分配選定的值:
In [93]: arr = np.zeros((3,2,2),int)
...: arr[:,0,0] = [1,2,3]
...: arr[:,1,1] = [4,5,6]
...:
...:
In [94]: arr
Out[94]:
array([[[1, 0],
[0, 4]],
[[2, 0],
[0, 5]],
[[3, 0],
[0, 6]]])
同樣的事情,但有一個高級索引分配:
In [97]: arr = np.zeros((3,2,2),int)
...: arr[:,[0,1],[0,1]] = np.array([[1,2,3],[4,5,6]]).T
In [98]: arr
Out[98]:
array([[[1, 0],
[0, 4]],
[[2, 0],
[0, 5]],
[[3, 0],
[0, 6]]])
這需要多次嘗試,因為我收到了廣播錯誤。在進行這樣的分配時獲得正確的尺寸是很棘手的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/338755.html
上一篇:使用numpy自定義二維矩陣運算
下一篇:創建回圈移位陣列的陣列/張量
