如何在python中定义5x3字符串数组?

如何在python中定义5x3字符串数组?,python,Python,如何在python中定义5x3字符串数组 我想将以下数据保存在字符串数组中: Name Surname Grade Steve Black 10 Jane Red 10 Peter Green 0 Kelly Pink 7 我来自C/C++语言,在这种编程语言中,它看起来是这样的: matrix[5][3]; matrix[0][0] = "Name"; matrix[0][1] = "Surname"; matrix[0][2] = "Grad

如何在python中定义5x3字符串数组

我想将以下数据保存在字符串数组中:

Name    Surname Grade
Steve   Black   10
Jane    Red     10
Peter   Green   0
Kelly   Pink    7
我来自C/C++语言,在这种编程语言中,它看起来是这样的:

matrix[5][3];

matrix[0][0] = "Name";
matrix[0][1] = "Surname";
matrix[0][2] = "Grade";

matrix[1][0] = "Steve";
matrix[1][1] = "Black";
matrix[1][2] = "10";

...
...
...

matrix[4][0] = "Kelly";
matrix[4][1] = "Pink";
matrix[4][2] = "7";
python中有没有办法创建这样的表


如果您知道python中的数据类型及其工作方式,请告诉我。

python没有多维数组,但您可以通过嵌套列表实现类似的效果

您只需在python中创建一个二维列表,并以以下方式循环填充所需的值即可-

lst = []        #currently a 1-d list but you can insert lists into it and make it a 2-d list.
#just for demo...you can loop instead to fill all the values
new_row = []
new_row.append("Steve")
new_row.append("Black")
new_row.append(10)
lst.append(new_row)
print(lst)     #this would print a 2-d list - [["Steve","Black",10]]

你可以这样做:

data = \
'''
Name    Surname Grade
Steve   Black   10
Jane    Red     10
Peter   Green   0
Kelly   Pink    7
'''

matrix = [line.split() for line in data.strip().split('\n')]
print(matrix)

将其放入嵌套列表中

a = [["Steve", "Black", 10], ["Jane", "Red", 10], ["Peter", "Green", 0], ["Kelly", "Pink", 7]]
你可以用这个。 将numpy作为np导入

matrix_data = np.array([["Name", "Surname", "Grade"],
                    ["Steve", "Black", "10"],
                    ["Jane", "Red", "10"],
                    ["Peter", "Green", "0"],
                    ["Kelly", "Pink", "7"]])
您可以访问使用以下代码行创建的数组元素

代码:

print(matrix_data[0][2])
Grade
matrix_data[:,2]
['Grade' '10' '10' '0' '7']
输出:

print(matrix_data[0][2])
Grade
matrix_data[:,2]
['Grade' '10' '10' '0' '7']
在尝试获取该矩阵的子集时,使用numpy特别有用,如下所示

代码:

print(matrix_data[0][2])
Grade
matrix_data[:,2]
['Grade' '10' '10' '0' '7']
输出:

print(matrix_data[0][2])
Grade
matrix_data[:,2]
['Grade' '10' '10' '0' '7']

如果将这三个列表定义为

firstnames = ["a", "b", "c", "d"]
lastnames = ["w", "x", "y", "z"]
grades = [1, 2, 3, 4]
然后您可以
zip
列表,并使用列表理解作为

merged = [[e1, e2, e3] for (e1, e2, e3) in zip(firstnames, lastnames, grades)]

也许你应该先阅读官方Python教程,它会让你免除更多的问题:当我看到C++时,我强烈反对这样的矩阵。为了存储这样的信息,我会创建一个包含相关信息的结构,只需为这个结构创建一个
std::vector
。在python中,可以通过使用类或仅仅创建一个参数元组(尽管-如果你能命名它,你应该为它创建一个类!)。@Kerek我同意你的观点,这个问题只是出于学习目的。如果你省略
np.array
,这段代码的工作原理完全相同。这里根本不需要NumPy。
matrix\u data[:,2]
您的建议能为这段代码带来价值吗?