Python numpy.matrix 矩阵索引方法 (item)

一、环境:

numpy 1.16.4
python 3.7

二、描述:

import numpy as np
a = np.mat([[1]])
print(type(a))
print("a:",a)
print("a[0][0]:",a[0][0])

输出:
在这里插入图片描述
可以看出,直接的索引无法对numpy.matrixl目标进行索引

如果是numpy.ndarray类型,则可以进行索引

import numpy as np
a = np.array([[1.]])
print(type(a))
print("a:",a)
print("a[0][0]:",a[0][0])

在这里插入图片描述

个人原因分析:matrixl 类型时 [[1]] 是一个 (1,1) 矩阵的对象 ,直接进行索引[0][0] 实质上是索引的 矩阵的对象,所以结果不变
在 array 时 则 索引的 数组内的 元素

三、解决:

import numpy as np
a = np.mat([[1.]])
print(type(a))
print("a:",a)
print("a[0][0]:",a[0][0])
print("item方法:",a.item(0,0))

在这里插入图片描述

四、item方法详解(数组和矩阵都可使用此方法):

a.item (* args)
将数组中的元素复制到标准Python标量并返回它。
参数(变量号和类型)

  • none:在这种情况下,该方法只对数组有效
    只有一个元素(’ a。size == 1 '),是哪个元素
    复制到标准Python标量对象并返回。
  • int_type:这个参数被解释为一个平面索引
    数组,指定复制和返回哪个元素。
  • int_types的元组:与单个int_type参数相同的函数,
    参数被解释为一个nd索引
    数组中。

返回值:

  • z:标准Python标量对象
    数组中指定元素的一个副本
    Python标量

当’ a '的数据类型是longdouble或clongdouble时,item()返回一个标量数组对象,因为没有可用的Python标量,不会丢失信息。Void数组为item()返回一个缓冲区对象,除非定义了字段,否则将返回一个tuple。
’ item '与[args]非常相似,不同的是,它不是一个数组标量,返回一个标准的Python标量。这对于加速是很有用的访问数组的元素并对元素执行运算,使用Python的优化数学数组。

例子:

            >>> np.random.seed(123)
            >>> x = np.random.randint(9, size=(3, 3))
            >>> x
            array([[2, 2, 6],
                   [1, 3, 6],
                   [1, 0, 1]])
            >>> x.item(3)
            1
            >>> x.item(7)
            0
            >>> x.item((0, 1))
            2
            >>> x.item((2, 2))
            1

最后感谢陶老师的指点!

发布了45 篇原创文章 · 获赞 28 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/m0_43505377/article/details/103926463