【发布时间】:2016-08-22 13:29:53
【问题描述】:
我正在自学python,我想创建一个矩阵;通过在互联网上阅读,我发现了许多定义矩阵的方法,因此我决定选择以下两种方法:
import numpy as np
# Method 1
w, h = 5, 5
M = [[0 for x in range(w)] for y in range(h)]
M[1][2] = 100 # ok
m = M[:,2] # <----- Why is it not possible?
# Method 2
A = np.zeros((5, 5))
A[1][2] = 100 # ok
a = A[:,2] # <----- Why is it possible?
在这两种情况下,我都可以构造矩阵,但是当我尝试通过选择矩阵本身的一列来定义数组时,就会出现问题。在第二种情况下,我可以定义 a 我不能为 m 做同样的事情;我做错了什么?
我应该怎么做才能从 M 中提取一列?
我认为原因在于 M 和 A 不是同一类型的变量,但老实说,我不了解其中的区别,因此我不知道如何进行。
<class 'list'> # M
<class 'numpy.ndarray'> # A
【问题讨论】:
-
要从 M 中提取一列,请使用
m = [sub[2] for sub in M] -
Numpy 是一个支持这些索引的库。 Python 列表没有。您可以使用
M = np.array(M)将该列表转换为 numpy 数组,您可以使用第二种方法。 -
好的,谢谢,问题解决了
标签: python arrays numpy matrix multidimensional-array