from numpy import matrix
new = matrix([raw_input("enter element in matrix. . ")]) # add element from user
取行並從用戶山坳尺寸和類似於C矩陣如何使用numpy的如何從nxn矩陣的用戶添加numpy矩陣中的用戶元素?
matrix([for i in row: for j in col: raw_input(add >data)])
from numpy import matrix
new = matrix([raw_input("enter element in matrix. . ")]) # add element from user
取行並從用戶山坳尺寸和類似於C矩陣如何使用numpy的如何從nxn矩陣的用戶添加numpy矩陣中的用戶元素?
matrix([for i in row: for j in col: raw_input(add >data)])
相較於其他的答案,我會用ast.literal_eval
而不是內置eval
,因爲它是多安全。如果您想要,您可以提前輸入矩陣尺寸的用戶輸入(n,m)
。檢查元素的數量是否符合您的期望也是一個好主意!所有這一切的例子:
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
輸出示例:
Enter space sep. matrix elements: 1 2 3 4 5 6
[[1 2]
[3 4]
[5 6]]
您可以使用eval來評估用戶給定到一個Python對象的字符串輸入NxN矩陣。如果您以列表格式提供3x3矩陣,矩陣可以從那裏獲取。
很小心。在代碼中使用eval可以讓人們提供惡意命令。如果這是進入生產代碼,這可能不是一個好主意。
>>> new = matrix([eval(raw_input("enter matrix: "))])
enter matrix: [1,2]
>>> new
matrix([[1, 2]])
將所述用戶響應是什麼格式? 'raw_input'只提示一個元素,而不是行或列號。 – askewchan
用戶將輸入像3行和3列 – Dhairya
那麼用戶是否只輸入矩陣的大小(例如你的例子中的((3,3)')而不是內容? – askewchan