[英]How to create this matrix from numpy array?
所以我想像往常一樣從 numpy 數組矩陣創建如下稀疏矩陣:
from scipy import sparse
I = np.array([0,1,2, 0,1,2, 0,1,2])
J = np.array([0,0,0,1,1,1,2,2,2])
DataElement = np.array([2,1,2,1,0,1,2,1,2])
A = sparse.coo_matrix((DataElement,(I,J)),shape=(3,3))
print(A.toarray()) ## This is what I expect to see.
我對 numpy 的嘗試是:
import numpy as np
U = np.empty((3,3,), order = "F")
U[:] = np.nan
## Initialize
U[0,0] = 2
U[2,0] = 2
U[0,2] = 2
U[2,2] = 2
for j in range(0,3):
## Slice columns first:
if (j !=0 and j!= 2):
for i in range(0,3):
## slice rows:
if (i != 0 and i != 2):
U[i,j] = 0
else:
U[i,j] = 1
使用numpy.add.at
一種方法:
arr = np.zeros((3,3), int)
np.add.at(arr, (I, J), DataElement)
print(arr)
輸出:
array([[2, 1, 2],
[1, 0, 1],
[2, 1, 2]])
有多種手動填充陣列的方法。
首先,您可以明確定義每個條目:
U = np.array([[2,1,2],[1,0,1],[2,1,2]],order='F')
或者你可以用 nans 初始化一個數組,然后通過訂閱它們來定義每個元素:
U = np.empty((3,3,), order = "F")
U[:] = np.nan
U[0,0],U[0,1],U[0,2]=2,1,2
U[1,0],U[1,1],U[1,2]=1,0,1
U[2,0],U[2,1],U[2,2]=2,1,2
最后,如果存在模式,則可以一次切片並定義多個值:
U[:,0]=[2,1,2]
U[:,1]=U[:,0]-1
U[:,2]=U[:,0]
在您的嘗試中,您只是錯過了一些條目,它們仍然是 nans。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.