Python numpy中的矩阵操作

Python numpy中的矩阵操作,python,numpy,matrix,Python,Numpy,Matrix,我写了下面的代码: import os import csv import numpy as np ROOT_PATH = os.path.dirname(os.path.abspath(__file__)) # These two lines give the path = os.path.join(ROOT_PATH, "0.dat") # path to a file on my disk with open(path, 'r') as f1: listme = csv.r

我写了下面的代码:

import os
import csv
import numpy as np

ROOT_PATH = os.path.dirname(os.path.abspath(__file__)) # These two lines give the 
path = os.path.join(ROOT_PATH, "0.dat")  # path to a file on my disk

with open(path, 'r') as f1:
    listme = csv.reader(f1, delimiter="\t") # I imported the file
    listme2 = list(listme) # I used this command to make a matrix in the next line
    m = np.matrix(listme2)
    m2 = np.delete(m,[1,2],1) # I deleted two columns to get a 2 by 2 matrix

print m + m # It cannot add these two matrix. It also cannot multiply them by np.dot(m,m)
我无法将我定义的矩阵添加到自身。请阅读代码中的注释

返回的错误为:

TypeError: unsupported operand type(s) for +: 'matrix' and 'matrix' 

这与
+
运算符无关,因为
m
是字符串矩阵,而不是数字矩阵。如果命令您手动执行以下操作,请先将
listme2
转换为数字列表,然后再使用它获取
m

或者,在创建矩阵时,指定
dtype

m = np.matrix(listme2, dtype=float)

您还可以使用
np.loadtxt
np.genfromtxt
直接获取2D数组,而无需
open
csv.reader
。自己读这本书;)

这与
+
运算符无关,因为
m
是字符串矩阵,而不是数字矩阵。如果命令您手动执行以下操作,请先将
listme2
转换为数字列表,然后再使用它获取
m

或者,在创建矩阵时,指定
dtype

m = np.matrix(listme2, dtype=float)

您还可以使用
np.loadtxt
np.genfromtxt
直接获取2D数组,而无需
open
csv.reader
。自己读这本书;)

当一个操作由于非数字数据类型而无法工作时,NumPy会给出此类无用的错误。如果您使用NumPy,您最好使用
np.loadtxt
或其他NumPy IO例程之一,而不是使用
csv
。当一个操作由于非数字数据类型而无法工作时,NumPy会给出此类无用的错误。如果您使用NumPy,您也可以使用
np.loadtxt
或其他numpy IO例程,而不是使用
csv
。您还可以在创建时设置数据类型。如果它们是字符串,numpy将进行数字转换。@zhangxaochen如何将“listme2”转换为数字列表?是否可以将数据直接作为数字矩阵导入?@zhangxaochen谢谢。第二个建议有效。我还想知道如何将“listme2”转换为数字列表。您还可以在创建时设置数据类型。如果它们是字符串,numpy将进行数字转换。@zhangxaochen如何将“listme2”转换为数字列表?是否可以将数据直接作为数字矩阵导入?@zhangxaochen谢谢。第二个建议有效。我还想知道如何将“listme2”转换为数字列表。