2013-10-22 78 views
0
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)]) 
+0

將所述用戶響應是什麼格式? 'raw_input'只提示一個元素,而不是行或列號。 – askewchan

+0

用戶將輸入像3行和3列 – Dhairya

+0

那麼用戶是否只輸入矩陣的大小(例如你的例子中的((3,3)')而不是內容? – askewchan

回答

1

相較於其他的答案,我會用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]] 
+0

謝謝Hookes.it是很好的例子。謝謝。 – Dhairya

+0

@Dhairya我很高興答案幫助和歡迎堆棧溢出!如果您覺得此問題完成了您的問題,請點擊綠色複選標記以「接受」此答案。 – Hooked

0

您可以使用eval來評估用戶給定到一個Python對象的字符串輸入NxN矩陣。如果您以列表格式提供3x3矩陣,矩陣可以從那裏獲取。

很小心。在代碼中使用eval可以讓人們提供惡意命令。如果這是進入生產代碼,這可能不是一個好主意。

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