Python numpy

来源:https://www.cnblogs.com/xuyiqing/archive/2018/03/16/8584958.html
-Advertisement-
Play Games

創建了一個一維向量和三行散列的矩陣 註意:這裡要求數據是同一結構,shape函數作用:幾行幾列 取值: 修改矩陣中的值: 這裡把5和7的值改成了10 強轉類型: 把int型轉為str型 其他操作: 矩陣初始化: 創建矩陣: 運算: 排序: 特別註意: 讀取txt文件: ...


import numpy
a=numpy.array([1,2,3,4])
b=numpy.array([[1,2,3],[4,5,6],[7,8,9]])
print(a.shape)
print(b.shape)

創建了一個一維向量和三行散列的矩陣

註意:這裡要求數據是同一結構,shape函數作用:幾行幾列

 

取值:

import numpy
b=numpy.array([[1,2,3],[4,5,6],[7,8,9]])
print(b[:,1])#這裡列印矩陣的第二列
print(b[:,0:2])#這裡取到第一列和第二列

 

修改矩陣中的值:

這裡把5和7的值改成了10

import numpy
b=numpy.array([[1,2,3],[4,5,6],[7,8,9]])
b[(b==5)|(b==7)] = 10
print(b)

 

強轉類型:

把int型轉為str型

import numpy
b=numpy.array([[1,2,3],[4,5,6],[7,8,9]])
c = b.astype(str)
print(c)

 

其他操作:

import numpy
b=numpy.array([[1,2,3],[4,5,6],[7,8,9]])
print(b.min())#求最小值
print(b.max(axis=1))#按行求最大
print(b.sum(axis=0))#按列求和

 

import numpy as np
a=np.arange(10).reshape(2,5)
print(a)
'''創建矩陣:
[[0 1 2 3 4]
 [5 6 7 8 9]]
'''
print(a.ndim)#求維度
print(a.shape)#幾行幾列
print(a.dtype.name)#矩陣數據類型名字
print(a.size)#元素個數

 

矩陣初始化:

import numpy as np
#矩陣初始化方法:
np.zeros((3,4))#3行4列矩陣初始化為0(預設為float類型)
np.ones((3,4),dtype=np.int32)#3行4列初始化值為1的int類型

 

創建矩陣:

import numpy as np
np.arange(10,30,5)
#從10到30,每隔5
#array([10, 15, 20, 25])

np.random.random((2,3))
'''
隨機創建:2行3列,-1到1之間
註意:必須是兩個random
array([[0.20925672, 0.09790786, 0.00158854],
       [0.73711854, 0.83033327, 0.22525092]])
'''
np.linspace(1,3,100)
#從1到3平均地取100個數(float類型)

 

 

運算:

import numpy as np
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
print(np.hstack((a,a)))
print(np.vstack((a,a)))
print(a.T)
print(a+a)
print(a*a)
print(a.dot(a))
print(np.dot(a,a))
print(np.exp(a))
print(np.sqrt(a))
print(a.shape)
print(a.ravel())
'''
不做解釋,一目瞭然
[[1 2 3 1 2 3]
 [4 5 6 4 5 6]
 [7 8 9 7 8 9]]

[[1 2 3]
 [4 5 6]
 [7 8 9]
 [1 2 3]
 [4 5 6]
 [7 8 9]]

[[1 4 7]
 [2 5 8]
 [3 6 9]]
 
[[ 2  4  6]
 [ 8 10 12]
 [14 16 18]]
 
[[ 1  4  9]
 [16 25 36]
 [49 64 81]]
 
[[ 30  36  42]
 [ 66  81  96]
 [102 126 150]]
 
[[ 30  36  42]
 [ 66  81  96]
 [102 126 150]]
 
 [[2.71828183e+00 7.38905610e+00 2.00855369e+01]
 [5.45981500e+01 1.48413159e+02 4.03428793e+02]
 [1.09663316e+03 2.98095799e+03 8.10308393e+03]]
 
[[1.         1.41421356 1.73205081]
 [2.         2.23606798 2.44948974]
 [2.64575131 2.82842712 3.        ]]
 
 (3, 3)
 
 [1 2 3 4 5 6 7 8 9]
'''

 

import numpy as np
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
print(a.argmax(axis=0))
#[2 2 2]列最大索引值
print(a.argmin(axis=1))
#[0 0 0]行最小索引值

 

import numpy as np
a=np.arange(0,40,10)
print(a)
b=np.tile(a,(3,2))
c=np.tile(a,(2,3))
print(b)
print(c)
'''
[ 0 10 20 30]

[[ 0 10 20 30  0 10 20 30]
 [ 0 10 20 30  0 10 20 30]
 [ 0 10 20 30  0 10 20 30]]
 
 [[ 0 10 20 30  0 10 20 30  0 10 20 30]
 [ 0 10 20 30  0 10 20 30  0 10 20 30]]
'''

 

排序:

import numpy as np
a=np.array([[1,4,6],[2,9,7],[5,3,8]])
print(a)
'''
[[1 4 6]
 [2 9 7]
 [5 3 8]]
'''
b=np.sort(a,axis=1)#按行排列
print(b)
'''
[[1 4 6]
 [2 7 9]
 [3 5 8]]
'''
c=np.sort(a,axis=0)#按列排列
print(c)
'''
[[1 3 6]
 [2 4 7]
 [5 9 8]]
'''
d=np.argsort(a)#索引值排序
print(d)
'''
[[0 1 2]
 [0 2 1]
 [1 0 2]]
'''

 

 

特別註意:

import numpy as np
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
c=a.view()
print(c is a)#false(c和a指向記憶體地址不同)
#複製了a,賦值給c
#如果是c=a,那麼c和a是同一個(指向同一個地址)
#print(c is a)地話,就會列印true
c[1,2] = 100
print(a)
'''
[[  1   2   3]
 [  4   5 100]
 [  7   8   9]]
'''
#這裡發現修改了c,那麼a也被修改了
#c和a雖然地址不同,但是共用一組數據

d=a.copy()
print(d is a)#false
d[1,3] = 100
#這裡沒有改變a
print(a)

 

 

讀取txt文件:

import numpy
#第一個參數為路徑,第二個參數為分隔符,第三個參數是讀取的類型
#最後一個參數意思:是否去掉第一行
a=numpy.genfromtxt("d:/a.txt",delimiter=",",dtype="str",skip_header=1)
print(a)

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最近到廣州某建站互聯網公司面試,當時面試官問假設有兩個字元串String a="abc",String b = "abc";問輸出a==b是true還是false。我當時毫不猶豫答了true,然後根據字元串常量池的知識點結合jvm的記憶體模型講解,然而他卻跟我說是false,說這是最基本的問題。我當時 ...
  • 前言 之前做過一個JavaScript版本的2048游戲,最近在學習C++,昨天晚上突然心血來潮,想用C++來實現,因為核心演算法已十分理解,所以兩個小時擼出來一個C++的簡易版本。 簡介 二維數組遍歷,C++基本數據類型,string類,控制結構,函數。 本方法不涉及指針以及面向對象思想,所以可作為 ...
  • pandas and numpy notebook 最近工作交接,整理電腦資料時看到了之前的基於Jupyter學習數據分析相關模塊學習筆記。想著拿出來分享一下,可是Jupyter導出來html文件,博客園不支持js註入,貼圖效果實在太差勁兒。所以只貼了內容,要是有需要文件原版(pdf、md、html ...
  • 文件 文件和文件夾 文件:文本文件、二進位文件 文件夾:(windows) G:\pythonWorkspace\python\study (linux/mac) /home/workspace/python 註意:文件夾路徑的斜杠linux與windows不同 windows下文件路徑:示例 跨平 ...
  • 利用反射擴展數組長度 思想:要擴展數組長度其實就是產生一個新的數組覆蓋舊的數組 備註: ...
  • 1、自定義一個工廠類,實現FactoryBean 交由spring管理public class JedisClusterFactory implements FactoryBean<JedisCluster> { private String hostAndPort; private JedisCl ...
  • 我們把變數從記憶體中變成可存儲或傳輸的過程稱之為序列化,在Python中叫pickling,在其他語言中也被稱之為serialization,marshalling,flattening等等,都是一個意思。 序列化之後,就可以把序列化後的內容寫入磁碟,或者通過網路傳輸到別的機器上。 反過來,把變數內容 ...
  • Python unicode轉義字元\u的處理 python還有更為專業的方法來解決unicode轉義字元問題,那就是unicode escape編碼。 s = s2.decode("unicode escape") 就可以了 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...