二维数组转稀疏数组的思路:
- 遍历原始的二维数组,得到有效数字的个数sum,比如说大于0
- 根据sum就可以创建稀疏数组sparseArr int[sum+1] [3]
- 将二维数组的有效数据存入到稀疏数组中
稀疏数组转到二维数组的思路:
- 先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组,arr = [n][n].
- 在读取稀疏数组后几行的数据,并赋给原始的二维数组即可
1、数组转成稀疏数组
import numpy as np
# 首先创建一个空数组
chessArr = np.zeros((11,11))
# 在空数组中填一些值
chessArr[1][2] = 1
chessArr[2][3] = 2
count = 0
# 将二维数组转成稀疏数组
# 首先遍历二维数组看看有多少了非零值
for i in range(11):
for j in range(11):
if chessArr[i][j] != 0:
count = count + 1
# 创建一个系数数组
print(count)
spareArr = np.zeros((count+1,3))
spareArr[0][0] = 11
spareArr[0][1] = 11
spareArr[0][2] = count
print(spareArr)
count_1 = 0
for i in range(11):
for j in range(11):
if chessArr[i][j] != 0:
count_1 = count_1+1
spareArr[count_1][0] = i
spareArr[count_1][1] = j
spareArr[count_1][2] = chessArr[i][j]
print(spareArr)
2、稀疏数组转成一般数组
# 以上面的结果直接得到稀疏数组
spareArr = [[11,11,2],[1,2,1],[2,3,2]]
# 对稀疏数组的第一行的前两列的值用于创建一般数组的初始化
chessarr = np.zeros((spareArr[0][0],spareArr[0][1]))
# 遍历稀疏数组得到对应的有值的数据的位置
for i in range(1,len(spareArr)):
chessarr[spareArr[i][0]][spareArr[i][1]] = spareArr[i][2]
print(chessarr)