栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

numpy中的矩阵索引

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

numpy中的矩阵索引

索引后查看形状:

In [295]: A=np.matrix([1,2,3])In [296]: A.shapeOut[296]: (1, 3)In [297]: A[0]Out[297]: matrix([[1, 2, 3]])In [298]: A[0].shapeOut[298]: (1, 3)

此行为的关键

np.matrix
是始终为2d。因此,即使您选择一行(
A[0,:]
),结果仍然是2d shape
(1,3)
。因此,您可以随心所欲地串
[0]
起来,没有新的事情发生。

您想完成

A[0][0]
什么?一样
A[0,0]
吗?对于基
np.ndarray
类,它们是等效的。

注意,

Python
解释器将索引转换为
__getitem__
调用。

 A.__getitem__(0).__getitem__(0) A.__getitem__((0,0))

[0][0]
是2个索引操作,而不是一个。因此,第二种的效果
[0]
取决于第一种的产生。

对于数组

A[0,0]
等效于
A[0,:][0]
。但是对于矩阵,您需要执行以下操作:

In [299]: A[0,:][:,0]Out[299]: matrix([[1]])  # still 2d

============================

“一个数组本身”,但是我怀疑任何一个在他们的头脑中正确的人都会选择它作为科学图书馆中矩阵的模型。

那么,我获得的输出的逻辑是什么?为什么矩阵对象的第一个元素是自身?

另外,A [0 ,:]与A [0]不同

根据这些评论,让我提出一些澄清。

A[0]
并不意味着“返回第一个元素”。表示沿第一轴选择。对于一维数组,表示第一项。对于二维数组,它表示第一行。因为
ndarray
那将是一个1d数组,但对于a
matrix
则是另一个
matrix
。因此对于2d数组或矩阵,
A[i,:]
与相同
A[i]

A[0]
不仅返回自己。它返回一个新矩阵。不同
id

In [303]: id(A)Out[303]: 2994367932In [304]: id(A[0])Out[304]: 2994532108

它可能具有相同的数据,形状和步幅,但这是一个新对象。它

ith
与多行矩阵的行一样唯一。

大多数独特的

matrix
活动在中定义:
numpy/matrixlib/defmatrix.py
。我本来建议您看一下该
matrix.__getitem__
方法,但是大多数操作都在中执行
np.ndarray.__getitem__

np.matrix
类的添加
numpy
是为了方便老式的MATLAB程序员。
numpy
数组几乎可以具有任意数量的维,即0、1…。尽管2000年左右的版本将其推广到2个或更多,但MATLAB仅允许2个。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/646447.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号