故障在python填充空矩阵
问题描述:
我有我有创建一个空的矩阵,它的尺寸由阵列的大小和所确定的函数,它是从包含记录而产生的阵列[键,字符]故障在python填充空矩阵
数组的宽度。我需要使用第一个数组中的字符填充此列表。现在,当我编译这个我只是得到没有。有没有什么办法可以完成这个不同
def createArray(size):
return [None] * size
def createMatrix(rows,cols):
m = createArray(rows)
for i in range(rows):
m[i] = createArray(cols)
return m
def fillMatrix(matrix, array):
rows = len(matrix)
cols = len(matrix[0])
arrSpot = 0
for r in range(0,rows,1):
for c in range(0, cols, 1):
matrix[r][c] = array[arrSpot][1]
arrSpot += 1
return
答
我想你只是忘了给fillMatrix一个返回值。
+0
不,'fillMatrix'就地变换了矩阵,所以它可能应该返回'None',因为它确实如此。 – abarnert 2013-04-25 00:23:03
答
一个相当简单的方法来做到这一点将是当你去一个列表追加行。所以,这样的事情:
def create_matrix(rows, cols):
matrix = []
for i in range(rows):
row = [0]*cols
matrix.append(row)
return matrix
我通常只会使用numpy为此。如果你有numpy的,那么你可以做
import numpy as np
matrix = np.zeros((rows,cols))
(注意输入np.zeros是一个元组,而不是两个参数。)
你在打电话?到目前为止,它的正义函数定义... – James 2013-04-24 23:55:18
任何显而易见的事情你都可以用这种方式来做,比如'a = createArray(16); m = createMatrix(4,4); fillMatrix(m,a)' - 就是要引发一个'TypeError',因为你期望数组中的每个元素都是可以下标的,而不是。你可以做的唯一事情就是不填充0行矩阵,或者将不是用'createArray'做成的数组作为你的数组(例如,一个(行*列)×2或更多矩阵将工作...)。如果您希望我们调试您的代码,则必须向我们显示您的实际代码。 – abarnert 2013-04-25 00:21:42
此外,您必须填写数组的唯一代码是'createArray',它将'None'放在每个值中。所以,无论你如何工作,大概'fillMatrix'都会填充一个矩阵,其值只有'None'值,所以...你为什么会惊讶于最终只有'None'价值观? – abarnert 2013-04-25 00:22:37