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

最後感謝陶老師的指點!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章