Python 如何在nxn矩阵的numpy矩阵中从用户添加元素?

Python 如何在nxn矩阵的numpy矩阵中从用户添加元素?,python,numpy,matrix,Python,Numpy,Matrix,从用户处获取行和列大小,如c矩阵中如何使用numpy输入nxn矩阵 from numpy import matrix new = matrix([raw_input("enter element in matrix. . ")]) # add element from user 可以使用eval将用户给定的字符串计算为Python对象。如果您以列表格式提供3x3矩阵,则矩阵可以从中获取 小心点。在代码中使用eval会让人们提供恶意命令。如果这是进入生产代码,这可能不是一个好主意 matrix

从用户处获取行和列大小,如c矩阵中如何使用numpy输入nxn矩阵

from numpy import matrix

new = matrix([raw_input("enter element in matrix. . ")]) # add element from user

可以使用eval将用户给定的字符串计算为Python对象。如果您以列表格式提供3x3矩阵,则矩阵可以从中获取

小心点。在代码中使用eval会让人们提供恶意命令。如果这是进入生产代码,这可能不是一个好主意

matrix([for i in row: for j in col: raw_input(add >data)])

与另一个答案相反,我会使用
ast.literal_eval
而不是内置的
eval
,因为它更安全。如果需要,您可以让用户提前输入矩阵维度。检查元素的数量是否与您期望的匹配也是一个好主意!这一切的一个例子是:

>>> new = matrix([eval(raw_input("enter matrix: "))])
enter matrix: [1,2]
>>> new
matrix([[1, 2]])
示例输出:

import numpy as np
import ast

# Example input for a 3x2 matrix of numbers
n,m = 3,2
s = raw_input("Enter space sep. matrix elements: ")

# Use literal_eval
items  = map(ast.literal_eval, s.split(' '))

# Check to see if it matches
assert(len(items) == n*m)

# Convert to numpy array and reshape to the right size
matrix = np.array(items).reshape((n,m))

print matrix

用户响应的格式是什么?
raw_input
只提示输入元素,而不是行号或列号。用户将输入3行和3列,用户将只输入矩阵的大小(例如示例中的
(3,3)
),而不是内容?谢谢胡克斯。这是一个很好的示例。谢谢。@Dhairya我很高兴答案有帮助,欢迎使用堆栈溢出!如果您觉得这就完成了您的问题,请单击绿色复选标记“接受”此答案。
Enter space sep. matrix elements: 1 2 3 4 5 6
[[1 2]
 [3 4]
 [5 6]]