Python 如何定义二维数组?

Python 如何定义二维数组?,python,matrix,syntax-error,Python,Matrix,Syntax Error,我想定义一个没有初始化长度的二维数组,如下所示: Matrix = [][] data=[] for l in infile: l = split(',') data.append(l) import numpy as np mm = np.matrix([]) mm = np.append(mm, [[1,2]], axis=1) 但它不起作用 我尝试了下面的代码,但它也是错误的: Matrix = [5][5] 错误: # 2D array/ matrix # 5

我想定义一个没有初始化长度的二维数组,如下所示:

Matrix = [][]
data=[]
for l in infile:
    l = split(',')
    data.append(l)
import numpy as np
mm = np.matrix([])
mm = np.append(mm, [[1,2]], axis=1)
但它不起作用

我尝试了下面的代码,但它也是错误的:

Matrix = [5][5]
错误:

# 2D array/ matrix

# 5 rows, 5 cols
rows_count = 5
cols_count = 5

# create
#     creation looks reverse
#     create an array of "cols_count" cols, for each of the "rows_count" rows
#        all elements are initialized to 0
two_d_array = [[0 for j in range(cols_count)] for i in range(rows_count)]

# index is from 0 to 4
#     for both rows & cols
#     since 5 rows, 5 cols

# use
two_d_array[0][0] = 1
print two_d_array[0][0]  # prints 1   # 1st row, 1st col (top-left element of matrix)

two_d_array[1][0] = 2
print two_d_array[1][0]  # prints 2   # 2nd row, 1st col

two_d_array[1][4] = 3
print two_d_array[1][4]  # prints 3   # 2nd row, last col

two_d_array[4][4] = 4
print two_d_array[4][4]  # prints 4   # last row, last col (right, bottom element of matrix)

我的错误是什么?

从技术上讲,您试图为未初始化的数组编制索引。在添加项目之前,必须首先使用列表初始化外部列表;Python称之为 “列表理解”

现在可以将项目添加到列表中: 请注意,矩阵是“y”地址主键,换句话说,“y索引”位于“x索引”之前


尽管您可以随意命名它们,但我这样看是为了避免索引时可能出现的一些混乱,如果您对内部和外部列表都使用“x”,并且希望使用非方形矩阵。

从技术上讲,您是在尝试索引未初始化的数组。在添加项目之前,必须首先使用列表初始化外部列表;Python称之为 “列表理解”

现在可以将项目添加到列表中: 请注意,矩阵是“y”地址主键,换句话说,“y索引”位于“x索引”之前


尽管您可以随意命名它们,但我这样看是为了避免索引中可能出现的一些混乱,如果您对内部和外部列表都使用“x”,并且想要一个非方形矩阵。

如果您想要创建一个空矩阵,正确的语法是

matrix = [[]]
如果你想生成一个大小为5,填充0的矩阵

matrix = [[0 for i in xrange(5)] for i in xrange(5)]

如果要创建空矩阵,正确的语法是

matrix = [[]]
如果你想生成一个大小为5,填充0的矩阵

matrix = [[0 for i in xrange(5)] for i in xrange(5)]

您应该列出一个列表,最好的方法是使用嵌套理解:

>>> matrix = [[0 for i in range(5)] for j in range(5)]
>>> pprint.pprint(matrix)
[[0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0]]
在您的
[5][5]
示例中,您正在创建一个包含整数“5”的列表,并尝试访问其第5项,这自然会引发索引器,因为没有第5项:

>>> l = [5]
>>> l[5]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
>l=[5]
>>>l[5]
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
索引器:列表索引超出范围

您应该列出一个列表,最好的方法是使用嵌套理解:

>>> matrix = [[0 for i in range(5)] for j in range(5)]
>>> pprint.pprint(matrix)
[[0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0]]
在您的
[5][5]
示例中,您正在创建一个包含整数“5”的列表,并尝试访问其第5项,这自然会引发索引器,因为没有第5项:

>>> l = [5]
>>> l[5]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
>l=[5]
>>>l[5]
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
索引器:列表索引超出范围

在Python中,您将创建一个列表列表。您不必提前声明维度,但可以。例如:

matrix = []
matrix.append([])
matrix.append([])
matrix[0].append(2)
matrix[1].append(3)
>>> matrix = 5*[5*[0]]
>>> matrix
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
>>> matrix[4][4] = 2
>>> matrix
[[0, 0, 0, 0, 2], [0, 0, 0, 0, 2], [0, 0, 0, 0, 2], [0, 0, 0, 0, 2], [0, 0, 0, 0, 2]]
现在矩阵[0][0]==2和矩阵[1][0]==3。您还可以使用列表理解语法。本例使用它两次构建“二维列表”:

来自itertools导入计数,takewhile
矩阵=[[i表示takewhile中的i(λj:j<(k+1)*10,计数(k*10))]表示范围(10)中的k]

在Python中,您将创建一个列表列表。您不必提前声明维度,但可以。例如:

matrix = []
matrix.append([])
matrix.append([])
matrix[0].append(2)
matrix[1].append(3)
>>> matrix = 5*[5*[0]]
>>> matrix
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
>>> matrix[4][4] = 2
>>> matrix
[[0, 0, 0, 0, 2], [0, 0, 0, 0, 2], [0, 0, 0, 0, 2], [0, 0, 0, 0, 2], [0, 0, 0, 0, 2]]
现在矩阵[0][0]==2和矩阵[1][0]==3。您还可以使用列表理解语法。本例使用它两次构建“二维列表”:

来自itertools导入计数,takewhile
矩阵=[[i表示takewhile中的i(λj:j<(k+1)*10,计数(k*10))]表示范围(10)中的k]

如果你真的想要一个矩阵,最好使用
numpy
numpy
中的矩阵运算通常使用二维数组类型。创建新阵列的方法有很多;最有用的函数之一是
zeros
函数,它接受一个形状参数并返回一个给定形状的数组,其值初始化为零:

>>> import numpy
>>> numpy.zeros((5, 5))
array([[ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.]])
以下是创建二维阵列和矩阵的一些其他方法(为了紧凑性而删除输出):


numpy
也提供了一个
matrix
类型,但它可用于任何用途,将来可能会从
numpy
中删除。

如果您确实想要一个矩阵,最好使用
numpy
numpy
中的矩阵运算通常使用二维数组类型。创建新阵列的方法有很多;最有用的函数之一是
zeros
函数,它接受一个形状参数并返回一个给定形状的数组,其值初始化为零:

>>> import numpy
>>> numpy.zeros((5, 5))
array([[ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.]])
以下是创建二维阵列和矩阵的一些其他方法(为了紧凑性而删除输出):


numpy
也提供了一个
矩阵
类型,但它可用于任何用途,将来可能会从
numpy
中删除。

以下是一个用于初始化列表的较短符号:

matrix = [[0]*5 for i in range(5)]
不幸的是,将其缩短为类似于
5*[5*[0]]
的内容实际上不起作用,因为您最终会得到同一列表的5个副本,因此当您修改其中一个副本时,它们都会发生更改,例如:

matrix = []
matrix.append([])
matrix.append([])
matrix[0].append(2)
matrix[1].append(3)
>>> matrix = 5*[5*[0]]
>>> matrix
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
>>> matrix[4][4] = 2
>>> matrix
[[0, 0, 0, 0, 2], [0, 0, 0, 0, 2], [0, 0, 0, 0, 2], [0, 0, 0, 0, 2], [0, 0, 0, 0, 2]]

以下是用于初始化列表列表的较短符号:

matrix = [[0]*5 for i in range(5)]
不幸的是,将其缩短为类似于
5*[5*[0]]
的内容实际上不起作用,因为您最终会得到同一列表的5个副本,因此当您修改其中一个副本时,它们都会发生更改,例如:

matrix = []
matrix.append([])
matrix.append([])
matrix[0].append(2)
matrix[1].append(3)
>>> matrix = 5*[5*[0]]
>>> matrix
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
>>> matrix[4][4] = 2
>>> matrix
[[0, 0, 0, 0, 2], [0, 0, 0, 0, 2], [0, 0, 0, 0, 2], [0, 0, 0, 0, 2], [0, 0, 0, 0, 2]]

我在逗号分隔的文件中读到如下内容:

Matrix = [][]
data=[]
for l in infile:
    l = split(',')
    data.append(l)
import numpy as np
mm = np.matrix([])
mm = np.append(mm, [[1,2]], axis=1)

列表“data”是一个列表,其中包含索引数据[row][col]

我在逗号分隔的文件中读取到如下内容:

Matrix = [][]
data=[]
for l in infile:
    l = split(',')
    data.append(l)
import numpy as np
mm = np.matrix([])
mm = np.append(mm, [[1,2]], axis=1)

然后,列表“数据”是一个列表,其中包含索引数据[row][col]

以声明零(1)矩阵:

e、 g

或 整数((x,y)) e、 g

甚至三维也是可能的。
(请参见-->多维数组)

声明零(1)矩阵:

e、 g

或 整数((x,y)) e、 g

甚至三维也是可能的。 (请参见-->多维数组)

请注意这个简短的表达,请参见@F.J答案中的完整解释


请注意这个简短的表达式,请参见@F.J答案中的完整解释

我正在编写第一个Python脚本,并且
   [ value,  value,  value,  value,  value],
   [ value,  value,  value,  value,  value],
   ...
list 1: To store rows
list 2: Actual two-dimensional matrix
from random import randint

coordinates=[]
temp=[]
points=int(raw_input("Enter No Of Coordinates >"))
for i in range(0,points):
    randomx=randint(0,1000)
    randomy=randint(0,1000)
    temp=[]
    temp.append(randomx)
    temp.append(randomy)
    coordinates.append(temp)

print coordinates
Enter No Of Coordinates >4
[[522, 96], [378, 276], [349, 741], [238, 439]]
import numpy as np
mm = np.matrix([])
mm = np.append(mm, [[1,2]], axis=1)
matrix_in_python  = [['Roy',80,75,85,90,95],['John',75,80,75,85,100],['Dave',80,80,80,90,95]]
matrix = { '1':[0,0] , '2':[0,1],'3':[0,2],'4' : [1,0],'5':[1,1],'6':[1,2],'7':[2,0],'8':[2,1],'9':[2,2]};
col = 3
row = 4
array = [[0] * col for _ in range(row)]
rows = int(input())
cols = int(input())

matrix = []
for i in range(rows):
  row = []
  for j in range(cols):
    row.append(0)
  matrix.append(row)

print(matrix)
l=[[0]*(L) for _ in range(W)]
l = [[0 for x in range(L)] for y in range(W)] 
rows = int(input('Enter rows\n'))
my_list = []
for i in range(rows):
    my_list.append(list(map(int, input().split())))
def matrix(rows, cols, start=0):
    return [[c + start + r * cols for c in range(cols)] for r in range(rows)]


assert matrix(2, 3, 1) == [[1, 2, 3], [4, 5, 6]]
Matrix = [[], []]
Matrix[0].append(1)
[[1], []]
Matrix[1].append(1)
[[], [1]]
# get the input rows and cols
rows = int(input("rows : "))
cols = int(input("Cols : "))

# initialize the list
l=[[0]*cols for i in range(rows)]

# fill some random values in it
for i in range(0,rows):
    for j in range(0,cols):
        l[i][j] = i+j

# print the list
for i in range(0,rows):
    print()
    for j in range(0,cols):
        print(l[i][j],end=" ")