簡體   English   中英

如何從 numpy 數組創建這個矩陣?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM