Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python save numpy数组,仅包含非零元素_Python_Arrays_Python 2.7_Numpy - Fatal编程技术网

python save numpy数组,仅包含非零元素

python save numpy数组,仅包含非零元素,python,arrays,python-2.7,numpy,Python,Arrays,Python 2.7,Numpy,我有一个数组,其中大多数元素为零 A = [ 1,0,2 2,3,0 0,0,4 ] 我想把这个保存为 rowid[0] colid[0] 1 rowid[0] colid[2] 2 rowid[1] colid[0] 2 rowid[1] colid[1] 3 rowid[2] colid[2] 4 这里rowid和colid是数组,它们将数组索引映射到原始文件中的实际条目 我如何在不使用for循环的情况下执行此操作 有一个scipy.sparse包可以处理这

我有一个数组,其中大多数元素为零

A =  [ 1,0,2
       2,3,0
       0,0,4 ]
我想把这个保存为

rowid[0] colid[0] 1
rowid[0] colid[2] 2
rowid[1] colid[0] 2
rowid[1] colid[1] 3
rowid[2] colid[2] 4
这里rowid和colid是数组,它们将数组索引映射到原始文件中的实际条目


我如何在不使用for循环的情况下执行此操作

有一个scipy.sparse包可以处理这样的矩阵。@hpaulj,我正在寻找一种在明文文件中以指定格式编写这样一个数组的方法,它应该可以轻松地通过
argwhere
。使用您自己的行格式。是否希望您的输出具有字符串
“rowid[0]”
等?想想看,
savetxt
可以使用更奇特的格式,例如
fmt='row[%d]col[%d]%d'
可能需要
savetxt
中的
值来存储数组的原始形状,这样,如果数组非常稀疏,就可以正确地重建它。并且设置
分隔符=',“
如果你想要一个合适的
*.csv
修正了一些格式,并在原始答案中添加了
分隔符=”,“
A = np.array(A).reshape(3, 3) # make A a 3x3 numpy array 
i, j = np.where(A != 0) # find indices where it is nonzero 
v = A[i, j] # extract nonzero values of the array 
np.savetxt('file.csv', np.vstack((i, j, v)).T, delimiter = ',') # stack and save 

# @Daniel F suggestion is to make header with array shape and add delimiter kwarg
np.savetxt('file.csv', np.vstack((i, j, v)).T, delimiter = ',', header = str(A.shape))