python科學計算庫之Numpy庫的使用的簡單習題

Numpy庫

Numpy(Numerical Python的縮寫)是一個開源的Python庫,用于進行科學計算。它提供了一個高性能的多維數組對象(ndarray)及用于處理這些數組的各種工具和函數。由于其高效和靈活的數據結構以及豐富的功能,Numpy已成為Python科學計算的基礎庫,廣泛應用于數據分析、機器學習、工程仿真等領域。

Numpy的主要特點包括:

高性能的多維數組支持:Numpy的核心是多維數組對象(ndarray),它提供了統一的接口來進行快速的數組計算。與Python原生的列表相比,Numpy的數組在性能上有顯著的優勢,尤其是在處理大數據時。

廣泛的數學函數庫:Numpy提供了大量的數學函數,包括線性代數運算、傅里葉變換、隨機數生成等,這使得進行科學計算變得非常便捷。

數組廣播功能:Numpy可以讓不同大小的數組在一起進行數學計算時非常方便,通過其廣播機制,小數組會在算術運算中自動擴展到與大數組相同的大小,這使得數組間的運算表達更加直觀。

高效的內存使用:Numpy的數組使用連續內存塊,這不僅有利于減少內存使用,還能提升計算性能。此外,Numpy還提供了內存映射功能,允許處理超過內存大小的數據集。

與其他語言的接口:Numpy可以很容易地與C、C++等語言集成,這允許在性能關鍵的應用中使用這些語言編寫核心算法,同時保持Python的易用性。

Numpy是許多高級科學計算庫的基礎,包括Pandas(數據分析庫)、Matplotlib(繪圖庫)、Scikit-learn(機器學習庫)等,幾乎成為了進行科學計算和數據分析的Python開發的必備庫。

快速入門題

  1. 創建一個從1到80,步長為4的一維數組A,并將其變成一個4*5的二維數組,輸出A的轉置
import numpy as np
A=np.arange(1,80,4) #A=np.arange(1,80)[::4] 
A=A.reshape(4,5)
print(A.T)

2. 隨機生成a,b兩個數組,其中a.shape: (4, 1) b.shape: (3,) 計算a+b,a*b,a/b

import numpy as np
a=np.random.randint(1,11,(4,1))
b=np.random.randint(1,11,(3,))
print(a+b)
print(a*b)
print(a/b)

3. 創建一個shape為5*3的隨機矩陣A,打印出A中最大元素和最小元素,平均值,并計算每一行的和

import numpy as np
A=np.random.randint(0,40,(5,3))
print(A)
print(A.max())
print(A.min())
print(A.mean())
for i in A:print(i.sum())

4. 創建兩個3*3的(0,5)之間的隨機數組a和b,對a,b進行水平合并后得到數組c,對c使用Min-Max 標準化算法對數據進行標準化處理并輸出結果
在這里插入圖片描述


import numpy as np
a=np.random.randint(0,5,(3,3))
b=np.random.randint(0,5,(3,3))
c=np.hstack((a,b)) def minmax(a, axis=None):a_min = np.min(a, axis=axis, keepdims=True)a_max = np.max(a, axis=axis, keepdims=True)return (a - a_min)/(a_max - a_min)print(minmax(c))

5. 打印出以下數組(要求使用np.ones創建形狀為8*8的矩陣):
[[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]]

import numpy as np
a=np.ones((8,8),dtype=np.int8)
a[::2,1::2]=0 
a[1::2,::2]=0 
print(a)#[1::2, ::2]: 是對數組a的切片操作,用于選擇數組中的特定元素。
#1::2 表示從第1個索引開始(注意,在Python中索引是從0開始的),每隔一個元素選擇一次,直到數組的最后一個元素。這是對數組的第一個維度(通常是行)的操作。
#::2 表示從第0個索引開始,每隔一個元素選擇一次,直到該維度的最后一個元素。這是對數組的第二個維度(通常是列)的操作

6. 使用numpy創建下列數組[1,1,2,3,4,5,6,1,1,6],找出數組中1元素的位置索引并輸出索引(使用兩種方法)。

import numpy as np
a=np.array([1,1,2,3,4,5,6,1,1,6])
#way1
b=[]
for i in range(len(a)):if a[i]==1:b.append(i)
print(b)        
#way2
print(list(np.where(a==1)[0]))

7. 使用numpy創建一維數組A,對A里面的數據進行去重得到B,使用numpy創建形狀與B相同的隨機數組C,自定義ufunc函數計算B和C的和(使用numpy.frompyfunc)
A為[4,4,1,2,3,4,5,7,9,1,1],數組C的數據范圍在(0,5)之間

import numpy as np
A=np.array([4,4,1,2,3,4,5,7,9,1,1])
B=np.unique(A) #進行去重
print(B.shape) #(7,)
C=np.random.randint(0,5,(7,))
print(B)
print(C)
def add_elements(x, y):return x + y
add_them = np.frompyfunc(add_elements, 2, 1)
print(add_them(B,C))

8.用numpy編程創建國際象棋盤,填充8*8矩陣,棋盤是正方形,由橫縱各八格,顏色一深一淺交錯排列的64個小正方格組成,深色為黑格(為0),淺色為白格(為1),如下圖所示。

在這里插入圖片描述

并輸出國際象棋盤對應的矩陣

import numpy as np
matr1=np.ones((8,8))
for i in range(8):for j in range(8):if(i+j)%2==0:matr1[i,j]=0
print('國際棋盤對應的矩陣為:\n',matr1)
for i in range(0,8):for j in range(0,8):if matr1[i,j]==0:print("□",end=' ')else:print("■", end=' ')print('\n')

9. 創建一個大小3*3,(-1,1)值之間隨機數組A, 對A的后兩行進行交換,輸出A中非0元素的值,將A中非0元素替換成0。

import numpy as np
A=np.random.uniform(-1,1,(3,3))
print(A)
A[[1,2]]=A[[2,1]]
print(A)
B=np.where(A<0)
print(A[B])
for i in range(A.shape[0]):for j in range(A.shape[1]):if A[i][j]<0:A[i][j]=0
print(A)

10.使用Numpy數組實現生命游戲
生命游戲,簡稱為生命,是英國數學家約翰·何頓·康威在1970年發明的細胞自動機。
給定一個包含 m × n 個格子的面板,每一個格子都可以看成是一個細胞。每個細胞具有一個初始狀態 live(1)即為活細胞, 或 dead(0)即為死細胞。每個細胞與其八個相鄰位置(水平,垂直,對角線)的細胞都遵循以下四條生存定律:

  1. 如果活細胞周圍八個位置的活細胞數少于兩個,則該位置活細胞死亡;
  2. 如果活細胞周圍八個位置有兩個或三個活細胞,則該位置活細胞仍然存活;
  3. 如果活細胞周圍八個位置有超過三個活細胞,則該位置活細胞死亡;
  4. 如果死細胞周圍正好有三個活細胞,則該位置死細胞復活
import numpy as np
def iterate(Z):#鄰居N = (Z[0:-2,0:-2] + Z[0:-2,1:-1] + Z[0:-2,2:] +Z[1:-1,0:-2]                + Z[1:-1,2:] +Z[2:  ,0:-2] + Z[2:  ,1:-1] + Z[2:  ,2:])#規則birth = (N==3) & (Z[1:-1,1:-1]==0)survive = ((N==2) | (N==3)) & (Z[1:-1,1:-1]==1)Z[...] = 0Z[1:-1,1:-1][birth | survive] = 1return Z
Z = np.random.randint(0,2,(50,50))
for i in range(100): Z = iterate(Z)
print(Z)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/717808.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/717808.shtml
英文地址,請注明出處:http://en.pswp.cn/news/717808.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Google 地圖 API 教程--干貨(1/2)

Google Maps API 教程 在本教程中我們將學習如何使用谷歌地圖API V3創建交互式地圖。 什么是 API? API = 應用程序編程接口(Application programming interface)。 API(Application Programming Interface,應用編程接口)其實就是操作系統留給應用程序的一個調用接口,…

【d34】【Java】【力扣】27. 移除元素

題目 給你一個數組 nums 和一個值 val&#xff0c;你需要 原地 移除所有數值等于 val 的元素&#xff0c;并返回移除后數組的新長度。 不要使用額外的數組空間&#xff0c;你必須僅使用 O(1) 額外空間并 原地 修改輸入數組。 元素的順序可以改變。你不需要考慮數組中超出新長…

案例介紹:汽車售后服務網絡構建與信息抽取技術應用(開源)

一、引言 在當今競爭激烈的汽車行業中&#xff0c;售后服務的質量已成為品牌成功的關鍵因素之一。作為一位經驗豐富的項目經理&#xff0c;我曾參與構建一個全面的汽車售后服務網絡&#xff0c;旨在為客戶提供無縫的維修、保養和配件更換服務。這個項目的核心目標是通過高效的…

spring、springmvc、springboot框架的介紹

前言 我們已經學過Spring&#xff0c;SpringMVC&#xff0c;SpringBoot了&#xff0c;那這三者之間有沒有聯系或者區別呢&#xff1f; spring是一個一站式的輕量級java開發的框架&#xff0c;那我們剛開始使用spring的時候&#xff0c;是需要配置很多的配置文件以及繁瑣的過程…

狀態機實現雙擊、短按、長按等按鍵識別檢測算法

1、按鍵識別算法的作用 按鍵識別算法在不同的技術和應用背景下有不同的作用&#xff0c;但其核心目標都是準確、可靠地檢測和區分用戶通過物理或虛擬按鍵所執行的操作。按鍵識別算法在各類電子設備及系統中起到至關重要的作用&#xff0c;它確保了人機交互的有效性和準確性&…

Vue前端+快速入門【詳解】

目錄 1.Vue概述 2. 快速入門 3. Vue指令 4.表格信息案例 5. 生命周期 1.Vue概述 1.MVVM思想 原始HTMLCSSJavaScript開發存在的問題&#xff1a;操作麻煩&#xff0c;耦合性強 為了實現html標簽與數據的解耦&#xff0c;前端開發中提供了MVVM思想&#xff1a;即Model-Vi…

Mysql-主從架構篇(一主多從,半同步案例搭建)

主從架構 主從架構有什么用&#xff1f; 通過搭建MySQL主從集群&#xff0c;可以緩解MySQL的數據存儲以及訪問的壓力。 數據安全&#xff08;主備&#xff09;&#xff1a;給主服務增加一個數據備份。基于這個目的&#xff0c;可以搭建主從架構&#xff0c;或者也可以基于主…

GO語言學習筆記(與Java的比較學習)(九)

讀寫數據 讀取用戶的輸入 最簡單的辦法是使用 fmt 包提供的 Scan 和 Sscan 開頭的函數。 Scanln 掃描來自標準輸入的文本&#xff0c;將空格分隔的值依次存放到后續的參數內&#xff0c;直到碰到換行。Scanf 與其類似&#xff0c;除了 Scanf 的第一個參數用作格式字符串&…

大數據開發(Java面試真題-卷三)

大數據開發&#xff08;Java面試真題&#xff09; 1、簡要介紹以下JVM有幾種垃圾收集器&#xff1f;2、Java中Synchronized的底層原理是什么&#xff1f;3、Java String為什么是不可變的&#xff1f;為什么要設計成不可變&#xff1f;4、泛型&#xff1f;5、常用的反射方法&…

深入Java日志框架及其最佳實踐

概述 在Java應用開發中&#xff0c;日志框架是確保應用穩定性和可觀察性的關鍵組件。它幫助開發者記錄應用的行為、診斷問題&#xff0c;并監控系統的健康狀況。隨著Java生態系統的不斷發展&#xff0c;各種日志框架也應運而生&#xff0c;各有特點和優勢。本文將詳細探討幾個…

redis進階(一)

文章目錄 前言一、Redis中的對象的結構體如下&#xff1a;二、壓縮鏈表三、跳躍表 前言 Redis是一種key/value型數據庫&#xff0c;其中&#xff0c;每個key和value都是使用對象表示的。 一、Redis中的對象的結構體如下&#xff1a; /** Redis 對象*/ typedef struct redisO…

c# .net8 香橙派orangepi + hc-04藍牙 實例

這些使用c# .net8開發&#xff0c;硬件 香橙派 orangepi 3lts和 hc-04藍牙 使用場景&#xff1a;可以通過這個功能&#xff0c;手機連接orangepi進行wifi等參數配置 硬件&#xff1a; 1、帶USB口的linux開發板orangepi 2、USB 轉TTL 中轉接藍牙&#xff08;HC-04) 某寶上買…

Vue的響應式原理是如何實現的

Vue的響應式原理主要**基于JavaScript的Object.defineProperty方法實現**。具體如下&#xff1a; 1. 數據劫持&#xff08;Data Hijacking&#xff09; Vue在初始化時&#xff0c;會遍歷data對象中的所有屬性&#xff0c;并使用Object.defineProperty將這些屬性轉換為getter/s…

Flink:Temporal Table Function(時態表函數)和 Temporal Join

博主歷時三年精心創作的《大數據平臺架構與原型實現&#xff1a;數據中臺建設實戰》一書現已由知名IT圖書品牌電子工業出版社博文視點出版發行&#xff0c;點擊《重磅推薦&#xff1a;建大數據平臺太難了&#xff01;給我發個工程原型吧&#xff01;》了解圖書詳情&#xff0c;…

AR時間序列模型

AR時間序列模型&#xff08;AutoRegressive Time Series Model&#xff09;是一種用于分析和預測時間序列數據的統計模型。該模型假設未來的觀測值與過去的觀測值相關&#xff0c;且該相關性可以通過線性回歸來描述。 AR模型的基本思想是將當前時刻的觀測值表示為過去幾個時刻…

設計模式(十五)狀態模式

請直接看原文:設計模式系列 ------------------------------------------------------------------------------------------------------------------------------- 前言 建議在閱讀本文前先閱讀設計模式&#xff08;十一&#xff09;策略模式這篇文章&#xff0c;雖說狀態…

java.sqlrecoverableexception: io error: the network adapter could not establ

數據庫相關學習資料下載地址&#xff1a; 數據庫相關資料合集 Java SQLRecoverableException: IO Error: The Network Adapter Could Not Establish Connection 在進行Java開發中&#xff0c;經常會遇到與數據庫進行交互的情況。然而&#xff0c;有時候我們可能會遇到java.sq…

Redis過期刪除策略

1、定時刪除&#xff1a; 一旦鍵過期就立即從內存中刪除&#xff0c;節省內存空間&#xff0c;但刪除過程會占用大量CPU時間&#xff0c;可能影響服務器的響應時間和吞吐量。 2、惰性刪除&#xff1a; 并不會立即從內存中刪除過期鍵&#xff0c;而是在需要訪問時才會檢查是否…

【MATLAB】MVMD_ MFE_SVM_LSTM 神經網絡時序預測算法

有意向獲取代碼&#xff0c;請轉文末觀看代碼獲取方式~也可轉原文鏈接獲取~ 1 基本定義 MVMD_MFE_SVM_LSTM神經網絡時序預測算法結合了多變量多尺度分解&#xff08;MVMD&#xff09;、多尺度特征提取&#xff08;MFE&#xff09;、支持向量機&#xff08;SVM&#xff09;和長…

Python爬蟲之爬取并下載嗶哩嗶哩視頻

親自使用過&#xff0c;太好用了 # 導入requests模塊&#xff0c;模擬發送請求 import requests # 導入json import json # 導入re import re# 定義請求頭 headers {Accept: */*,Accept-Language: en-US,en;q0.5,User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6…