蟒蛇,操作与角色
问题描述:
矩阵比方说,我有一个字符表,希望对数字进行操作:蟒蛇,操作与角色
import numpy
pru=numpy.matrix([['a', 'a','w','a'],[1, 2,4,5],[3, 4,1,2]])
type(pru)
numpy.matrixlib.defmatrix.matrix
a=pru[1:3,0]
b=a - a[0]
我收到以下错误:
unsupported operand type(s) for -: 'matrix' and 'matrix'
但是,如果我创建另一个模糊字符的矩阵,我可以进行减法,但对象的“类型”仍然相同:
pru=numpy.matrix([[1, 2,4,5],[3, 4,1,2]])
type(pru)
numpy.matrixlib.defmatrix.matrix
a=pru[:,0]
b=a - a[0]
我也得到正确的结果。
所以将它转换为浮动我做的:
a=a.astype(float)
但我不希望被转换元件,每次我需要它的每个部分。我想在一个对象中有不同类型的元素(比如R中的data.frames)。这在Python中可能吗?
答
您必须添加numpy.object,就像这样:
pru=numpy.matrix([['a', 'a','w','a'],[1, 2,4,5],[3, 4,1,2]], dtype=numpy.object)
然后:
a=pru[1:3,0]
print a - a[0]
它打印:
matrix([[0],
[2]], dtype=object)
答
如果你正在寻找一个Python中的数据框对象,你应该使用pandas,而不是numpy。 这将使您更好地支持标记的行和列,并允许更轻松地混合数据类型。 在Pandas中,相同类型的列是存储的,因此我已将您的数据转换为将每个数据类型放在每列中。 下面是该操作将是什么样子的熊猫:
from pandas import DataFrame
pru = DataFrame([['a', 1, 3], ['a', 2, 4], ['w', 4, 1], ['a', 5, 2]])
a = pru[[1,2]].ix[0]
b = a - a[1]
b
此外,使用numpy的时候,你会经常发现,对于ndarray类的接口更加发达和维护良好的比基体类。 如果你想制作一个包含复合类型的数组,你可以使用numpy的dtype system。
你确定'a = pru [:1:3,0]'正在做你认为/想要的吗?这是一个错字吗? – aganders3 2015-02-17 20:34:29