我正在编写一些代码,如下所示:
import numpy as np
A=np.array([[1,0,3,5,7],[4,0,6,2,3]])
def SMD(matrix):
if isinstance(matrix,np.ndarray)==False:
raise ValueError('The needed datatype is an array')
else:
m= matrix.shape[0]
n= matrix.shape[1]
a=np.array([])
b=np.array([0])
c=np.array([])
for i in range(m):
for j in range(n):
if matrix[i][j] !=0:
np.append(a,matrix[i][j])
np.append(c,j)
np.append(b,len(a))
return a,b,c
然而,在这种情况下,NumPy追加不适用于我.如果我使用列表而不是数组,则代码运行得很好:
def SMD(matrix):
if isinstance(matrix,np.ndarray)==False:
raise ValueError('The needed datatype is an array')
else:
m= matrix.shape[0]
n= matrix.shape[1]
d=[]
e=[0]
f=[]
for i in range(m):
for j in range(n):
if matrix[i][j] !=0:
d.append(matrix[i][j])
f.append(j)
e.append(len(d))
return d,e,f
所需的输出为:
[1, 3, 5, 7, 4, 6, 2, 3], [0, 4, 8], [0, 2, 3, 4, 0, 2, 3, 4]
或作为数组(取决于使用的代码).
当然,我想知道为什么第一个代码不起作用.
据我所知,在计算速度方面,使用数组可能更可取,但在这种情况下,这会有什么不同吗?
谢谢