網站首頁 編程語言 正文
?1 shape()函數?
讀取矩陣的長度,比如shape[0]就是讀取矩陣第一維度的長度,相當于行數。它的輸入參數可以是一個整數表示維度,也可以是一個矩陣。shape函數返回的是一個元組tuple,表示數組(矩陣)的維度/ 形狀,例子如下:
- w.shape[0]返回的是w的行數
- w.shape[1]返回的是w的列數
- df.shape():查看行數和列數
1. 數組(矩陣)只有一個維度時,shape只有shape[0],返回的是該一維數組(矩陣)中元素的個數,通俗點說就是返回列數,因為一維數組只有一行,一維情況中array創建的可以看做list(或一維數組),創建時用()和[ ]都可以,多維就使用[ ]
>>> a=np.array([1,2])
>>> a
array([1, 2])
>>> a.shape
(2L,)
>>> a.shape[0]
2L
>>> a.shape[1]
IndexError: tuple index out of range #最后報錯是因為一維數組只有一個維度,可以用a.shape或a.shape[0]來訪問
#這個使用的是兩個()包裹,得到的數組和前面的一樣
>>> a=np.array((1,2))
>>> a
array([1, 2])
2.數組有兩個維度(即行和列)時,a.shape返回的元組表示該數組的行數與列數
#注意二維數組要用()和[]一起包裹起來,鍵入print a 會得到一個用2個[]包裹的數組(矩陣)
>>> b=np.array([[1,2,3],[4,5,6]])
>>> b
array([[1, 2, 3],
[4, 5, 6]])
>>> b.shape
(2L, 3L)
總結:使用np.array()創建數組時,
一維的可以直接np.array([1,2,3])或者np.array((1,2,3))
二維的要使用np.array([[1,2,3],[1,2,3]]),用一個()和一個[]把要輸入的list包裹起來
三維的要使用np.array([[[1,2,3],[1,2,3]]]),用一個()和兩個[]把要輸入的list包裹起來
>>> a=np.array([[[1,2],[3,4]]])
>>> a
array([[[1, 2],
[3, 4]]])
>>> a.shape
(1L, 2L, 2L)
返回的元組表示3個維度各包含的元素的個數。所謂元素,在一維時就是元素的個數,二維時表示行數和列數,三維時a.shape【0】表示創建的塊數,a.shape【1】和a.shape【2】表示每一塊(每一塊都是二維的)的行數和列數。
>>> a=np.ones([2,2,3])#創建兩個2行3列的數組(矩陣)
>>> a
array([[[ 1., 1., 1.],
[ 1., 1., 1.]],
[[ 1., 1., 1.],
[ 1., 1., 1.]]])
2?reshape()函數
?改變數組的形狀,并且原始數據不發生變化。但是,reshape()函數中的參數需要滿足乘積等于數組中數據總數.
如:當我們將8個數使用(2,3)重新排列時,python會報錯
import numpy as np
a=np.array([1,2,3,4])
b=np.array([[1,2,3,4],[4,5,6,7],[7,8,9,1]])
print("a:\n",a)
print("b:\n",b)
print(b.dtype)
a_r=a.reshape((2,2))
print("a_r:\n",a_r)
d=a.reshape((-1,1))
print("d:\n",d)
e=a.reshape((1,-1))
print("e:\n",e)
#結果如下
a:
[1 2 3 4]
c:
[[1 2 3 4]
[4 5 6 7]
[7 8 9 1]]
int32
a_r:
[[1 2]
[3 4]]
d:
[[1]
[2]
[3]
[4]]
e:
[[1 2 3 4]]
而且,reshape()函數得出的數組與原數組使用的是同一個存儲空間,改變一個,另一個也隨之改變。
【注意】shape和reshape()函數都是對于數組(array)進行操作的,對于list結構是不可以的
【參考】
Python:numpy中shape和reshape的用法?
原文鏈接:https://blog.csdn.net/qq_29831163/article/details/89841367
相關推薦
- 2022-01-25 項目啟動的時候報Exception in thread main 錯誤解決方法
- 2022-04-03 Flutter實現旋轉掃描效果_Android
- 2022-06-27 Android音視頻開發之MediaCodec的使用教程_Android
- 2022-03-20 基于ABP框架實現數據字典開發_實用技巧
- 2022-04-04 切換路由時如何關閉上一個頁面的所有請求-axios cancelToken
- 2022-08-27 解決react中useState狀態異步更新的問題_React
- 2022-10-10 pandas?修改列名的實現示例_python
- 2022-05-25 Inspinia的version 2.4模板使用的谷歌字體加載很慢問題解決
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支