国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

線性代數(shù)-Python-01:向量的基本運(yùn)算 - 手寫Vector及numpy的基本用法

這篇具有很好參考價(jià)值的文章主要介紹了線性代數(shù)-Python-01:向量的基本運(yùn)算 - 手寫Vector及numpy的基本用法。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、代碼倉庫

https://github.com/Chufeng-Jiang/Python-Linear-Algebra-for-Beginner/tree/main

二、向量的基本運(yùn)算

2.1 加法

線性代數(shù)-Python-01:向量的基本運(yùn)算 - 手寫Vector及numpy的基本用法,線性代數(shù)python,線性代數(shù),python,學(xué)習(xí)

2.2 數(shù)量乘法

線性代數(shù)-Python-01:向量的基本運(yùn)算 - 手寫Vector及numpy的基本用法,線性代數(shù)python,線性代數(shù),python,學(xué)習(xí)

2.3 向量運(yùn)算的基本性質(zhì)

線性代數(shù)-Python-01:向量的基本運(yùn)算 - 手寫Vector及numpy的基本用法,線性代數(shù)python,線性代數(shù),python,學(xué)習(xí)

2.4 零向量

線性代數(shù)-Python-01:向量的基本運(yùn)算 - 手寫Vector及numpy的基本用法,線性代數(shù)python,線性代數(shù),python,學(xué)習(xí)
線性代數(shù)-Python-01:向量的基本運(yùn)算 - 手寫Vector及numpy的基本用法,線性代數(shù)python,線性代數(shù),python,學(xué)習(xí)
線性代數(shù)-Python-01:向量的基本運(yùn)算 - 手寫Vector及numpy的基本用法,線性代數(shù)python,線性代數(shù),python,學(xué)習(xí)
線性代數(shù)-Python-01:向量的基本運(yùn)算 - 手寫Vector及numpy的基本用法,線性代數(shù)python,線性代數(shù),python,學(xué)習(xí)

2.5 向量的長度

線性代數(shù)-Python-01:向量的基本運(yùn)算 - 手寫Vector及numpy的基本用法,線性代數(shù)python,線性代數(shù),python,學(xué)習(xí)線性代數(shù)-Python-01:向量的基本運(yùn)算 - 手寫Vector及numpy的基本用法,線性代數(shù)python,線性代數(shù),python,學(xué)習(xí)

2.6 單位向量

單位向量叫做 u hat
線性代數(shù)-Python-01:向量的基本運(yùn)算 - 手寫Vector及numpy的基本用法,線性代數(shù)python,線性代數(shù),python,學(xué)習(xí)
線性代數(shù)-Python-01:向量的基本運(yùn)算 - 手寫Vector及numpy的基本用法,線性代數(shù)python,線性代數(shù),python,學(xué)習(xí)

2.7 點(diǎn)乘/內(nèi)積:兩個(gè)向量的乘法 --答案是一個(gè)標(biāo)量

線性代數(shù)-Python-01:向量的基本運(yùn)算 - 手寫Vector及numpy的基本用法,線性代數(shù)python,線性代數(shù),python,學(xué)習(xí)線性代數(shù)-Python-01:向量的基本運(yùn)算 - 手寫Vector及numpy的基本用法,線性代數(shù)python,線性代數(shù),python,學(xué)習(xí)
線性代數(shù)-Python-01:向量的基本運(yùn)算 - 手寫Vector及numpy的基本用法,線性代數(shù)python,線性代數(shù),python,學(xué)習(xí)線性代數(shù)-Python-01:向量的基本運(yùn)算 - 手寫Vector及numpy的基本用法,線性代數(shù)python,線性代數(shù),python,學(xué)習(xí)

線性代數(shù)-Python-01:向量的基本運(yùn)算 - 手寫Vector及numpy的基本用法,線性代數(shù)python,線性代數(shù),python,學(xué)習(xí)線性代數(shù)-Python-01:向量的基本運(yùn)算 - 手寫Vector及numpy的基本用法,線性代數(shù)python,線性代數(shù),python,學(xué)習(xí)
線性代數(shù)-Python-01:向量的基本運(yùn)算 - 手寫Vector及numpy的基本用法,線性代數(shù)python,線性代數(shù),python,學(xué)習(xí)
線性代數(shù)-Python-01:向量的基本運(yùn)算 - 手寫Vector及numpy的基本用法,線性代數(shù)python,線性代數(shù),python,學(xué)習(xí)
線性代數(shù)-Python-01:向量的基本運(yùn)算 - 手寫Vector及numpy的基本用法,線性代數(shù)python,線性代數(shù),python,學(xué)習(xí)

三、手寫Vector代碼

3.1 在控制臺測試__repr__和__str__方法

線性代數(shù)-Python-01:向量的基本運(yùn)算 - 手寫Vector及numpy的基本用法,線性代數(shù)python,線性代數(shù),python,學(xué)習(xí)

3.2 創(chuàng)建實(shí)例測試代碼

from playLA.Vector import Vector

if __name__ == "__main__":

    vec = Vector([5, 2])
    print(vec)
    print("len(vec) = {}".format(len(vec)))
    print("vec[0] = {}, vec[1] = {}".format(vec[0], vec[1]))

線性代數(shù)-Python-01:向量的基本運(yùn)算 - 手寫Vector及numpy的基本用法,線性代數(shù)python,線性代數(shù),python,學(xué)習(xí)

3.3 完整代碼

線性代數(shù)-Python-01:向量的基本運(yùn)算 - 手寫Vector及numpy的基本用法,線性代數(shù)python,線性代數(shù),python,學(xué)習(xí)文章來源地址http://www.zghlxwxcb.cn/news/detail-717878.html

Vector.py

import math
from ._globals import EPSILON
class Vector:

    def __init__(self, lst):
        """
        __init__ 代表類的構(gòu)造函數(shù)
        雙下劃線開頭的變量 例如_values,代表類的私有成員
        lst是個(gè)引用,list(lst)將值復(fù)制一遍,防止用戶修改值
        """
        self._values = list(lst)

    def dot(self, another):
        """向量點(diǎn)乘,返回結(jié)果標(biāo)量"""
        assert len(self) == len(another), \
            "Error in dot product. Length of vectors must be same."
        return sum(a * b for a, b in zip(self, another))

    def norm(self):
        """返回向量的模"""
        return math.sqrt(sum(e**2 for e in self))

    def normalize(self):
        """
        歸一化,規(guī)范化
        返回向量的單位向量
        此處設(shè)計(jì)到了除法: def __truediv__(self, k):
        """
        if self.norm() < EPSILON:
            raise ZeroDivisionError("Normalize error! norm is zero.")
        return Vector(self._values) / self.norm()
        # return 1 / self.norm() * Vector(self._values)
        # return Vector([e / self.norm() for e in self])

    def __truediv__(self, k):
        """返回?cái)?shù)量除法的結(jié)果向量:self / k"""
        return (1 / k) * self

    @classmethod
    def zero(cls, dim):
        """返回一個(gè)dim維的零向量
        @classmethod 修飾符對應(yīng)的函數(shù)不需要實(shí)例化,不需要 self 參數(shù),但第一個(gè)參數(shù)需要是表示自身類的cls參數(shù),可以來調(diào)用類的屬性,類的方法,實(shí)例化對象等。
        """
        return cls([0] * dim)

    def __add__(self, another):
        """向量加法,返回結(jié)果向量"""
        assert len(self) == len(another), \
            "Error in adding. Length of vectors must be same."
        # return Vector([a + b for a, b in zip(self._values, another._values)])
        return Vector([a + b for a, b in zip(self, another)])

    def __sub__(self, another):
        """向量減法,返回結(jié)果向量"""
        assert len(self) == len(another), \
            "Error in subtracting. Length of vectors must be same."
        return Vector([a - b for a, b in zip(self, another)])

    def __mul__(self, k):
        """返回?cái)?shù)量乘法的結(jié)果向量:self * k"""
        return Vector([k * e for e in self])

    def __rmul__(self, k):
        """
        返回?cái)?shù)量乘法的結(jié)果向量:k * self
        self本身就是一個(gè)列表
        """
        return self * k

    def __pos__(self):
        """返回向量取正的結(jié)果向量"""
        return 1 * self

    def __neg__(self):
        """返回向量取負(fù)的結(jié)果向量"""
        return -1 * self

    def __iter__(self):
        """返回向量的迭代器"""
        return self._values.__iter__()

    def __getitem__(self, index):
        """取向量的第index個(gè)元素"""
        return self._values[index]

    def __len__(self):
        """返回向量長度(有多少個(gè)元素)"""
        return len(self._values)

    def __repr__(self):
        """打印顯示:Vector([5, 2])"""
        return "Vector({})".format(self._values)

    def __str__(self):
        """打印顯示:(5, 2)"""
        return "({})".format(", ".join(str(e) for e in self._values))

_globals.py

# 包中的變量,但是對包外不可見,因此使用“_”開頭
EPSILON = 1e-8

main_vector.py

from playLA.Vector import Vector

if __name__ == "__main__":

    vec = Vector([5, 2])
    print(vec)
    print("len(vec) = {}".format(len(vec)))
    print("vec[0] = {}, vec[1] = {}".format(vec[0], vec[1]))

    vec2 = Vector([3, 1])
    print("{} + {} = {}".format(vec, vec2, vec + vec2))
    print("{} - {} = {}".format(vec, vec2, vec - vec2))

    print("{} * {} = {}".format(vec, 3, vec * 3))
    print("{} * {} = {}".format(3, vec, 3 * vec))

    print("+{} = {}".format(vec, +vec))
    print("-{} = {}".format(vec, -vec))

    zero2 = Vector.zero(2)
    print(zero2)
    print("{} + {} = {}".format(vec, zero2, vec + zero2))

    print("norm({}) = {}".format(vec, vec.norm()))
    print("norm({}) = {}".format(vec2, vec2.norm()))
    print("norm({}) = {}".format(zero2, zero2.norm()))

    print("normalize {} is {}".format(vec, vec.normalize()))
    print(vec.normalize().norm())

    print("normalize {} is {}".format(vec2, vec2.normalize()))
    print(vec2.normalize().norm())

    try:
        zero2.normalize()
    except ZeroDivisionError:
        print("Cannot normalize zero vector {}.".format(zero2))
    print("========點(diǎn)乘:========")
    print(vec.dot(vec2))

main_numpy_vector.py

import numpy as np

if __name__ == "__main__":

    print(np.__version__)

    # np.array 基礎(chǔ)
    print("========np.array 基礎(chǔ)========")
    lst = [1, 2, 3]
    lst[0] = "Linear Algebra"
    print(lst)
    print("========vec = np.array([1, 2, 3])========")
    vec = np.array([1, 2, 3])
    print(vec)
    # vec[0] = "Linear Algebra"
    # vec[0] = 666
    # print(vec)
    print("========np.array的創(chuàng)建========")
    # np.array的創(chuàng)建
    print(np.zeros(5))
    print(np.ones(5))
    print(np.full(5, 666))
    print("========np.array的基本屬性========")
    # np.array的基本屬性
    print(vec)
    print("size =", vec.size)
    print("size =", len(vec))
    print(vec[0])
    print(vec[-1])
    print(vec[0: 2])
    print(type(vec[0: 2]))
    print("========np.array的基本運(yùn)算========")
    # np.array的基本運(yùn)算
    vec2 = np.array([4, 5, 6])
    print("{} + {} = {}".format(vec, vec2, vec + vec2))
    print("{} - {} = {}".format(vec, vec2, vec - vec2))
    print("{} * {} = {}".format(2, vec, 2 * vec))
    print("沒有數(shù)學(xué)意義的乘法:{} * {} = {}".format(vec, vec2, vec * vec2))
    print("{}.dot({}) = {}".format(vec, vec2, vec.dot(vec2)))
    print("========求模========")
    print(np.linalg.norm(vec))
    print("========歸一化========")
    print(vec / np.linalg.norm(vec))
    print("========單位向量========")
    print(np.linalg.norm(vec / np.linalg.norm(vec)))
    print("========零向量會報(bào)錯(cuò)========")
    zero3 = np.zeros(3)
    print(zero3 / np.linalg.norm(zero3))

到了這里,關(guān)于線性代數(shù)-Python-01:向量的基本運(yùn)算 - 手寫Vector及numpy的基本用法的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 線性代數(shù)本質(zhì)系列(一)向量,線性組合,線性相關(guān),矩陣

    線性代數(shù)本質(zhì)系列(一)向量,線性組合,線性相關(guān),矩陣

    本系列文章將從下面不同角度解析線性代數(shù)的本質(zhì),本文是本系列第一篇 向量究竟是什么? 向量的線性組合,基與線性相關(guān) 矩陣與線性相關(guān) 矩陣乘法與線性變換 三維空間中的線性變換 行列式 逆矩陣,列空間,秩與零空間 克萊姆法則 非方陣 點(diǎn)積與對偶性 叉積 以線性變換

    2024年02月04日
    瀏覽(43)
  • 線性代數(shù)(三) 線性方程組&向量空間

    線性代數(shù)(三) 線性方程組&向量空間

    如何利用行列式,矩陣求解線性方程組。 用矩陣方程表示 齊次線性方程組:Ax=0; 非齊次線性方程組:Ax=b. 可以理解 齊次線性方程組 是特殊的 非齊次線性方程組 如何判斷線性方程組的解 其中R(A)表示矩陣A的秩 B表示A的增廣矩陣 n表示末知數(shù)個(gè)數(shù) 增廣矩陣 矩陣的秩 秩r= 未知

    2024年02月13日
    瀏覽(50)
  • 線性代數(shù) --- 向量的長度

    線性代數(shù) --- 向量的長度

    從代數(shù)的角度定義向量的長度 : ??????正如我在另外一篇文章中(見本文底部的推薦鏈接)提到的,兩個(gè)向量(這是默認(rèn)是兩個(gè)列向量)的內(nèi)積,可以表示為也可以表示為?,F(xiàn)在我們考慮一種特殊情形,現(xiàn)在我們有一個(gè)向量v=(1,2,3),那么這個(gè)向量自己和自己的內(nèi)積是多少呢

    2024年02月02日
    瀏覽(27)
  • 線性代數(shù)基礎(chǔ)--向量

    線性代數(shù)基礎(chǔ)--向量

    目錄 向量的概念 基本概念 抽象概念 向量的意義? 幾何意義 物理意義 歐式空間 特點(diǎn)和性質(zhì) ?行向量與列向量 行向量 列向量 兩者的關(guān)系 向量的基本運(yùn)算與范數(shù) 向量的基本運(yùn)算 向量的加法 數(shù)乘運(yùn)算(實(shí)數(shù)與向量相乘) 轉(zhuǎn)置 向量的范數(shù) 向量的模與內(nèi)積 向量的模 向量的內(nèi)積

    2024年02月11日
    瀏覽(59)
  • 線性代數(shù)(一)——向量基礎(chǔ)

    線性代數(shù)(一)——向量基礎(chǔ)

    線性代數(shù)的核心是向量的加和乘兩種運(yùn)算的組合,本篇博客為線性代數(shù)的一個(gè)引子,主要從向量、線性組合和矩陣逐步引出線性代數(shù)的相關(guān)知識。 首先介紹的是向量相關(guān),向量是基礎(chǔ)。 已知列向量: υ = [ v 1 v 2 ] boldsymbol{upsilon}=left[begin{matrix} v_1 \\\\ v_2end{matrix} right] υ =

    2024年03月21日
    瀏覽(32)
  • 線性代數(shù)基礎(chǔ)【3】向量

    線性代數(shù)基礎(chǔ)【3】向量

    一、基本概念 ①向量 ②向量的模(長度) ③向量的單位化 ④向量的三則運(yùn)算 ⑤向量的內(nèi)積 二、向量運(yùn)算的性質(zhì) (一)向量三則運(yùn)算的性質(zhì) α + β = β + α α + (β + γ) = (α + β) + γ k (α + β) = kα + kβ (k + l) α = kα + lα (二)向量內(nèi)積運(yùn)算的性質(zhì) (α , β) = (β , α) = α^Tβ = β^Tα (α , α)

    2024年02月03日
    瀏覽(29)
  • 線性代數(shù)之向量組

    文章目錄 前言 一、定義與定理 1、定義 1.1、n維向量 1.2、線性組合 1.3、線性表示(出)? ?1.4、線性相關(guān) 1.5、線性無關(guān) 2、判別線性相關(guān)的七大定理 2.1、定理一: 2.2、定理二: 2.3、定理三: 2.4、定理四: 2.5、定理五: 2.6、定理六: 2.7、定理七: 二、具體型向量關(guān)系 1.與

    2024年03月26日
    瀏覽(30)
  • 機(jī)器學(xué)習(xí)-線性代數(shù)-向量、基底及向量空間

    機(jī)器學(xué)習(xí)-線性代數(shù)-向量、基底及向量空間

    理解 直觀理解 行向量:把數(shù)字排成一行A = [ 4 ? 5 ] [4~ 5] [ 4 ? 5 ] 列向量:把數(shù)字排成一列A = ? [ 4 5 ] left [ begin{matrix} 4 \\\\ 5 \\\\ end{matrix} right ] ? [ 4 5 ? ] 幾何意義 默認(rèn)在基底條件下(直角坐標(biāo)系)中的坐標(biāo)表示的一個(gè)點(diǎn),也可以理解以原點(diǎn)為起點(diǎn),到目標(biāo)終點(diǎn)A的有向線段

    2024年02月06日
    瀏覽(32)
  • 【線性代數(shù)】向量組的線性相關(guān)性

    【線性代數(shù)】向量組的線性相關(guān)性

    目錄 一、圖解向量組的線性相關(guān)性 1. 向量組線性相關(guān)的定義 ?2.三維空間中向量組線性相關(guān)的幾何意義 3.向量組線性相關(guān)與齊次線性方程組 二、向量組線性相關(guān)的基本結(jié)論 三、向量組線性相關(guān)性總結(jié) 做出向量組A與向量組B的圖如下: 旋轉(zhuǎn)圖形得到: ?旋轉(zhuǎn)后發(fā)現(xiàn),向量組

    2024年02月04日
    瀏覽(29)
  • 線性代數(shù)(魏福義)——第一章:向量與線性空間

    線性代數(shù)(魏福義)——第一章:向量與線性空間

    坐標(biāo)系中可使用向量處理幾何與運(yùn)動(dòng)學(xué)的問題,一般使用到二維或者三維有序數(shù)組,如(x,y)、(x,y,z),這樣的數(shù)組稱作 向量, 實(shí)際問題會用到更多維的向量。 1.1.1向量 以有序數(shù)組表示向量。n個(gè)數(shù)排成的有序數(shù)組就是n維向量。 α=(a1,a2,a3...,an)稱為 行向量 ;將其

    2024年03月21日
    瀏覽(33)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包