NumPy transpose 的定义与计算过程

news2024/12/25 12:14:45

NumPy transpose 的定义与计算过程

NumPy documentation
https://numpy.org/doc/stable/index.html

numpy.transpose
https://numpy.org/doc/stable/reference/generated/numpy.transpose.html

numpy.ndarray.transpose
https://numpy.org/doc/stable/reference/generated/numpy.ndarray.transpose.html

1. numpy.transpose

transpose(a, axes=None)

Reverse or permute the axes of an array; returns the modified array.
返回修改后的数组。

reverse [rɪˈvɜː(r)s]:n. 反面,背面,倒退,相反的情况 v. 颠倒,倒车,撤销,彻底转变 adj. 相反的,反面的,反向的,背面的
permute [pə'mjuːt]:v. 交换,取代,置换,排列
invert [ˌɪnˈvɜː(r)t]:v. 倒置,反转,倒转,翻转 n. 颠倒的事物,翻转
transposition [ˌtrænspə'zɪʃ(ə)n]:n. 换位,移项,词序改变,变调 (曲)

For an array a with two axes, transpose(a) gives the matrix transpose.
对于具有两个轴的数组 atranspose(a) 给出矩阵转置。行元素更改为列元素,列元素更改为行元素。

Parameters

a: array_like
    Input array.

axes: tuple or list of ints, optional
    If specified, it must be a tuple or list which contains a permutation of [0, 1, ..., N-1] where N is the number of axes of a.
 
    The i'th axis of the returned array will correspond to the axis numbered `axes[i]` of the input.

    If not specified, defaults to `range(a.ndim)[::-1]`, which reverses the order of the axes.
    如果未指定,则默认为 `range(a.ndim)[::-1]`,它反转轴的顺序。

Returns

p: ndarray
    `a` with its axes permuted. A view is returned whenever possible.

1.1 Notes

Use transpose(a, argsort(axes)) to invert the transposition of tensors when using the axes keyword argument.

2. numpy.ndarray.transpose

ndarray.transpose(*axes)

Returns a view of the array with axes transposed.
返回轴已转置的数组视图。

For a 1-D array this has no effect, as a transposed vector is simply the same vector. To convert a 1-D array into a 2D column vector, an additional dimension must be added. np.atleast2d(a).T achieves this, as does a[:, np.newaxis].
对于一维数组,这没有影响,因为转置向量只是同一向量。要将一维数组转换为二维列向量,必须添加额外的维度。np.atleast2d(a).Ta[:, np.newaxis] 一样实现了这一点。

For a 2-D array, this is a standard matrix transpose.
对于二维数组,这是一个标准的矩阵转置。

For an n-D array, if axes are given, their order indicates how the axes are permuted. If axes are not provided and a.shape = (i[0], i[1], ... i[n-2], i[n-1]), then a.transpose().shape = (i[n-1], i[n-2], ... i[1], i[0]).
对于 n 维数组,如果给定轴,则它们的顺序指示轴的排列方式。

Parameters

axes: None, tuple of ints, or n ints
    None or no argument: reverses the order of the axes. (反转轴的顺序。)
    tuple of ints: i in the j-th place in the tuple means a’s i-th axis becomes a.transpose()’s j-th axis.
    n ints: same as an n-tuple of the same ints (this form is intended simply as a “convenience” alternative to the tuple form)

Returns

out: ndarray
    View of `a`, with axes suitably permuted.

3. Examples

3.1 一维矩阵

Transposing a 1-D array returns an unchanged view of the original array.
转置一维数组会返回原始的数组。

(base) yongqiang@yongqiang:~$ python
Python 3.9.5 (default, Jun  4 2021, 12:28:51)
[GCC 7.5.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> a = np.array([1, 2, 3, 4])
>>> a
array([1, 2, 3, 4])
>>> a.shape
(4,)
>>>
>>> a.transpose()
array([1, 2, 3, 4])
>>>
>>> a.transpose(0)
array([1, 2, 3, 4])
>>>
>>> exit()
(base) yongqiang@yongqiang:~$

3.2 二维矩阵

矩阵的转置是将数据元素的行标和列标互换,即 A ( i , j ) = M ( j , i ) A(i, j) = M(j, i) A(i,j)=M(j,i) 。The superscript “T” means “transpose”.
在这里插入图片描述

This illustrates the rule ( A T ) T = A (A^{T})^{T} = A (AT)T=A.
在这里插入图片描述

A symmetric matrix is equal to its transpose: A T = A A^{T} = A AT=A. A symmetric matrix must be a square matrix. In terms of its elements, if a matrix is symmetric, then a i j = a j i a_{ij} = a_{ji} aij=aji.
在这里插入图片描述

The main diagonal of a matrix consists of those elements that lie on the diagonal that runs from top left to bottom right. If the matrix is A, then its main diagonal are the elements who’s row number and column number are equal, a j j a_{jj} ajj.
在这里插入图片描述

在这里插入图片描述

(base) yongqiang@yongqiang:~$ python
Python 3.9.5 (default, Jun  4 2021, 12:28:51)
[GCC 7.5.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> a = np.array([[1, 2], [3, 4]])
>>> a
array([[1, 2],
       [3, 4]])
>>> a.shape
(2, 2)
>>>
>>> a.transpose(0, 1)
array([[1, 2],
       [3, 4]])
>>>
>>> a.transpose(1, 0)
array([[1, 3],
       [2, 4]])
>>>
>>> a.transpose((1, 0))
array([[1, 3],
       [2, 4]])
>>>
>>> a.transpose()
array([[1, 3],
       [2, 4]])
>>>
>>> exit()
(base) yongqiang@yongqiang:~$

在这里插入图片描述

A 图中第一个方括号 [] 为 0 轴,第二个方括号 [] 为 1 轴。

a = np.array([[1, 2], [3, 4]])

a[0][0] = 1
a[0][1] = 2
a[1][0] = 3
a[1][1] = 4

B 图中第一个方括号 [] 为 0 轴,第二个方括号 [] 为 1 轴。 a.transpose((1, 0)) 表示交换 0 轴和 1 轴。

>>> a.transpose((1, 0))
array([[1, 3],
       [2, 4]])
>>>
>>> a.transpose()
array([[1, 3],
       [2, 4]])
>>>

b[0][0] = 1
b[0][1] = 3
b[1][0] = 2
b[1][1] = 4

3.3 三维矩阵

(base) yongqiang@yongqiang:~$ python
Python 3.9.5 (default, Jun  4 2021, 12:28:51)
[GCC 7.5.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> a = np.arange(24)
>>> a
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23])
>>>
>>> a = a.reshape(2, 3, 4)
>>> a
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])
>>> a.shape
(2, 3, 4)
>>>
a[0][0][0] = 0 ; a[0][0][1] = 1 ; a[0][0][2] = 2 ; a[0][0][3] = 3 ;
a[0][1][0] = 4 ; a[0][1][1] = 5 ; a[0][1][2] = 6 ; a[0][1][3] = 7 ;
a[0][2][0] = 8 ; a[0][2][1] = 9 ; a[0][2][2] = 10; a[0][2][3] = 11;

a[1][0][0] = 12; a[1][0][1] = 13; a[1][0][2] = 14; a[1][0][3] = 15;
a[1][1][0] = 16; a[1][1][1] = 17; a[1][1][2] = 18; a[1][1][3] = 19;
a[1][2][0] = 20; a[1][2][1] = 21; a[1][2][2] = 22; a[1][2][3] = 23;

在这里插入图片描述

  • b = a.transpose((0, 1, 2)) - 按照原坐标轴改变序列,ba 相同,保持不变
>>> a
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])
>>> a.shape
(2, 3, 4)
>>>
>>> b = a.transpose((0, 1, 2))
>>> b
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])
>>> b.shape
(2, 3, 4)
>>>
b[0][0][0] = 0 ; b[0][0][1] = 1 ; b[0][0][2] = 2 ; b[0][0][3] = 3 ;
b[0][1][0] = 4 ; b[0][1][1] = 5 ; b[0][1][2] = 6 ; b[0][1][3] = 7 ;
b[0][2][0] = 8 ; b[0][2][1] = 9 ; b[0][2][2] = 10; b[0][2][3] = 11;

b[1][0][0] = 12; b[1][0][1] = 13; b[1][0][2] = 14; b[1][0][3] = 15;
b[1][1][0] = 16; b[1][1][1] = 17; b[1][1][2] = 18; b[1][1][3] = 19;
b[1][2][0] = 20; b[1][2][1] = 21; b[1][2][2] = 22; b[1][2][3] = 23;

在这里插入图片描述

  • c = a.transpose((1, 0, 2)) - 将 0 轴和 1 轴交换
>>> a
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])
>>> a.shape
(2, 3, 4)
>>>
>>> c = a.transpose((1, 0, 2))
>>> c
array([[[ 0,  1,  2,  3],
        [12, 13, 14, 15]],

       [[ 4,  5,  6,  7],
        [16, 17, 18, 19]],

       [[ 8,  9, 10, 11],
        [20, 21, 22, 23]]])
>>> c.shape
(3, 2, 4)
>>>
a[0][0][0] = 0 ; a[0][0][1] = 1 ; a[0][0][2] = 2 ; a[0][0][3] = 3 ;
a[0][1][0] = 4 ; a[0][1][1] = 5 ; a[0][1][2] = 6 ; a[0][1][3] = 7 ;
a[0][2][0] = 8 ; a[0][2][1] = 9 ; a[0][2][2] = 10; a[0][2][3] = 11;

a[1][0][0] = 12; a[1][0][1] = 13; a[1][0][2] = 14; a[1][0][3] = 15;
a[1][1][0] = 16; a[1][1][1] = 17; a[1][1][2] = 18; a[1][1][3] = 19;
a[1][2][0] = 20; a[1][2][1] = 21; a[1][2][2] = 22; a[1][2][3] = 23;

c = a.transpose((1, 0, 2)) - 将 0 轴和 1 轴交换

c[0][0][0] = 0 ; c[0][0][1] = 1 ; c[0][0][2] = 2 ; c[0][0][3] = 3 ;
c[1][0][0] = 4 ; c[1][0][1] = 5 ; c[1][0][2] = 6 ; c[1][0][3] = 7 ;
c[2][0][0] = 8 ; c[2][0][1] = 9 ; c[2][0][2] = 10; c[2][0][3] = 11;

c[0][1][0] = 12; c[0][1][1] = 13; c[0][1][2] = 14; c[0][1][3] = 15;
c[1][1][0] = 16; c[1][1][1] = 17; c[1][1][2] = 18; c[1][1][3] = 19;
c[2][1][0] = 20; c[2][1][1] = 21; c[2][1][2] = 22; c[2][1][3] = 23;

在这里插入图片描述

  • d = a.transpose((0, 2, 1)) - 将 1 轴和 2 轴交换
>>> a
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])
>>> a.shape
(2, 3, 4)
>>>
>>> d = a.transpose((0, 2, 1))
>>> d
array([[[ 0,  4,  8],
        [ 1,  5,  9],
        [ 2,  6, 10],
        [ 3,  7, 11]],

       [[12, 16, 20],
        [13, 17, 21],
        [14, 18, 22],
        [15, 19, 23]]])
>>> d.shape
(2, 4, 3)
>>>
a[0][0][0] = 0 ; a[0][0][1] = 1 ; a[0][0][2] = 2 ; a[0][0][3] = 3 ;
a[0][1][0] = 4 ; a[0][1][1] = 5 ; a[0][1][2] = 6 ; a[0][1][3] = 7 ;
a[0][2][0] = 8 ; a[0][2][1] = 9 ; a[0][2][2] = 10; a[0][2][3] = 11;

a[1][0][0] = 12; a[1][0][1] = 13; a[1][0][2] = 14; a[1][0][3] = 15;
a[1][1][0] = 16; a[1][1][1] = 17; a[1][1][2] = 18; a[1][1][3] = 19;
a[1][2][0] = 20; a[1][2][1] = 21; a[1][2][2] = 22; a[1][2][3] = 23;

d = a.transpose((0, 2, 1)) - 将 1 轴和 2 轴交换

d[0][0][0] = 0 ; d[0][1][0] = 1 ; d[0][2][0] = 2 ; d[0][3][0] = 3 ;
d[0][0][1] = 4 ; d[0][1][1] = 5 ; d[0][2][1] = 6 ; d[0][3][1] = 7 ;
d[0][0][2] = 8 ; d[0][1][2] = 9 ; d[0][2][2] = 10; d[0][3][2] = 11;

d[1][0][0] = 12; d[1][1][0] = 13; d[1][2][0] = 14; d[1][3][0] = 15;
d[1][0][1] = 16; d[1][1][1] = 17; d[1][2][1] = 18; d[1][3][1] = 19;
d[1][0][2] = 20; d[1][1][2] = 21; d[1][2][2] = 22; d[1][3][2] = 23;

在这里插入图片描述

  • e = a.transpose((2, 1, 0)) - 将 0 轴和 2 轴交换
>>> a
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])
>>> a.shape
(2, 3, 4)
>>>
>>> e = a.transpose((2, 1, 0))
>>> e
array([[[ 0, 12],
        [ 4, 16],
        [ 8, 20]],

       [[ 1, 13],
        [ 5, 17],
        [ 9, 21]],

       [[ 2, 14],
        [ 6, 18],
        [10, 22]],

       [[ 3, 15],
        [ 7, 19],
        [11, 23]]])
>>> e.shape
(4, 3, 2)
>>>
a[0][0][0] = 0 ; a[0][0][1] = 1 ; a[0][0][2] = 2 ; a[0][0][3] = 3 ;
a[0][1][0] = 4 ; a[0][1][1] = 5 ; a[0][1][2] = 6 ; a[0][1][3] = 7 ;
a[0][2][0] = 8 ; a[0][2][1] = 9 ; a[0][2][2] = 10; a[0][2][3] = 11;

a[1][0][0] = 12; a[1][0][1] = 13; a[1][0][2] = 14; a[1][0][3] = 15;
a[1][1][0] = 16; a[1][1][1] = 17; a[1][1][2] = 18; a[1][1][3] = 19;
a[1][2][0] = 20; a[1][2][1] = 21; a[1][2][2] = 22; a[1][2][3] = 23;

e = a.transpose((2, 1, 0)) - 将 0 轴和 2 轴交换

e[0][0][0] = 0 ; e[1][0][0] = 1 ; e[2][0][0] = 2 ; e[3][0][0] = 3 ;
e[0][1][0] = 4 ; e[1][1][0] = 5 ; e[2][1][0] = 6 ; e[3][1][0] = 7 ;
e[0][2][0] = 8 ; e[1][2][0] = 9 ; e[2][2][0] = 10; e[3][2][0] = 11;

e[0][0][1] = 12; e[1][0][1] = 13; e[2][0][1] = 14; e[3][0][1] = 15;
e[0][1][1] = 16; e[1][1][1] = 17; e[2][1][1] = 18; e[3][1][1] = 19;
e[0][2][1] = 20; e[1][2][1] = 21; e[2][2][1] = 22; e[3][2][1] = 23;

在这里插入图片描述

  • f = a.transpose((1, 2, 0)) - 将 (0, 1, 2) 轴交换为 (1, 2, 0)
>>> a
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])
>>> a.shape
(2, 3, 4)
>>>
>>> f = a.transpose((1, 2, 0))
>>> f
array([[[ 0, 12],
        [ 1, 13],
        [ 2, 14],
        [ 3, 15]],

       [[ 4, 16],
        [ 5, 17],
        [ 6, 18],
        [ 7, 19]],

       [[ 8, 20],
        [ 9, 21],
        [10, 22],
        [11, 23]]])
>>> f.shape
(3, 4, 2)
>>>
a[0][0][0] = 0 ; a[0][0][1] = 1 ; a[0][0][2] = 2 ; a[0][0][3] = 3 ;
a[0][1][0] = 4 ; a[0][1][1] = 5 ; a[0][1][2] = 6 ; a[0][1][3] = 7 ;
a[0][2][0] = 8 ; a[0][2][1] = 9 ; a[0][2][2] = 10; a[0][2][3] = 11;

a[1][0][0] = 12; a[1][0][1] = 13; a[1][0][2] = 14; a[1][0][3] = 15;
a[1][1][0] = 16; a[1][1][1] = 17; a[1][1][2] = 18; a[1][1][3] = 19;
a[1][2][0] = 20; a[1][2][1] = 21; a[1][2][2] = 22; a[1][2][3] = 23;

f = a.transpose((1, 2, 0)) - 将 (0, 1, 2) 轴交换为 (1, 2, 0) 轴

f[0][0][0] = 0 ; f[0][1][0] = 1 ; f[0][2][0] = 2 ; f[0][3][0] = 3 ;
f[1][0][0] = 4 ; f[1][1][0] = 5 ; f[1][2][0] = 6 ; f[1][3][0] = 7 ;
f[2][0][0] = 8 ; f[2][1][0] = 9 ; f[2][2][0] = 10; f[2][3][0] = 11;

f[0][0][1] = 12; f[0][1][1] = 13; f[0][2][1] = 14; f[0][3][1] = 15;
f[1][0][1] = 16; f[1][1][1] = 17; f[1][2][1] = 18; f[1][3][1] = 19;
f[2][0][1] = 20; f[2][1][1] = 21; f[2][2][1] = 22; f[2][3][1] = 23;

在这里插入图片描述

  • g = a.transpose((2, 0, 1)) - 将 (0, 1, 2) 轴交换为 (2, 0, 1)
>>> a
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])
>>> a.shape
(2, 3, 4)
>>>
>>> g = a.transpose((2, 0, 1))
>>> g
array([[[ 0,  4,  8],
        [12, 16, 20]],

       [[ 1,  5,  9],
        [13, 17, 21]],

       [[ 2,  6, 10],
        [14, 18, 22]],

       [[ 3,  7, 11],
        [15, 19, 23]]])
>>> g.shape
(4, 2, 3)
>>>
a[0][0][0] = 0 ; a[0][0][1] = 1 ; a[0][0][2] = 2 ; a[0][0][3] = 3 ;
a[0][1][0] = 4 ; a[0][1][1] = 5 ; a[0][1][2] = 6 ; a[0][1][3] = 7 ;
a[0][2][0] = 8 ; a[0][2][1] = 9 ; a[0][2][2] = 10; a[0][2][3] = 11;

a[1][0][0] = 12; a[1][0][1] = 13; a[1][0][2] = 14; a[1][0][3] = 15;
a[1][1][0] = 16; a[1][1][1] = 17; a[1][1][2] = 18; a[1][1][3] = 19;
a[1][2][0] = 20; a[1][2][1] = 21; a[1][2][2] = 22; a[1][2][3] = 23;

g = a.transpose((2, 0, 1)) - 将 (0, 1, 2) 轴交换为 (2, 0, 1) 轴

g[0][0][0] = 0 ; g[1][0][0] = 1 ; g[2][0][0] = 2 ; g[3][0][0] = 3 ;
g[0][0][1] = 4 ; g[1][0][1] = 5 ; g[2][0][1] = 6 ; g[3][0][1] = 7 ;
g[0][0][2] = 8 ; g[1][0][2] = 9 ; g[2][0][2] = 10; g[3][0][2] = 11;

g[0][1][0] = 12; g[1][1][0] = 13; g[2][1][0] = 14; g[3][1][0] = 15;
g[0][1][1] = 16; g[1][1][1] = 17; g[2][1][1] = 18; g[3][1][1] = 19;
g[0][1][2] = 20; g[1][1][2] = 21; g[2][1][2] = 22; g[3][1][2] = 23;

在这里插入图片描述

References

https://yongqiang.blog.csdn.net/
https://chortle.ccsu.edu/vectorlessons/vmch13/vmch13_14.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/115626.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

π120M31 10Mbps双通道数字隔离器兼容代替ADuM1200BR

π120M31 10Mbps双通道数字隔离器兼容代替ADuM1200BR 。具有出色的性能特征和可靠性,整体性能优于光耦和基于其他原理的数字隔离器产品。传输通道间彼此独立,可实现多种传输方向的配置,可实现 3.0kV rms 隔离耐压等级和 DC 到 10Mbps 信号传输…

网络通信基础

2022年圣诞节到来啦,很高兴这次我们又能一起度过~ 祝大家圣诞快乐🎄 网络互连的目的是进行网络通信, 也即是网络数据传输, 再具体一点, 是网络主机中的不同进程间, 基于网络传输数据. 那么, 在组建的网络中, 如何判断到底是从哪台主机, 将数据传输到那…

JAVA物联网云平台源码/Modbus/视频接入 物联网智能看板源码

JAVA物联网云平台使用 Java 语言、主流技术组合(MQTT、Spring Boot、Shiro、MyBatis、Druid、Ehcache、Thymeleaf、Bootstrap、Swagger)开发,支持多数据源,支持代码一键生成。 1、包含物联网云平台源码(源码全部开放&a…

【Three.js入门】灯光与阴影、平行光阴影属性、聚光灯的属性和应用

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,也会涉及到服务端 📃个人状态: 在校大学生一枚,已拿多个前端 offer(秋招) 🚀未…

百趣代谢组学分享:针灸改善乳腺癌相关性疲劳!非靶代谢组学…

非靶代谢组学肠道菌群测序:改善乳腺癌相关性疲劳—针灸! 文章标题:Acupuncture ameliorates breast cancer-related fatigue by regulating the gut microbiota-gut-brain axis 发表期刊:Frontiers in Endocrinology 影响因子&#xff1…

HTML5 新增元素

文章目录HTML5 新增元素概述headernavarticleasidesectionfooter表单元素新增type属性值(验证型)新增type属性值(取值型)output元素addressprogressmeterfigure 和 figcaptionfieldset 和 legendascriptHTML5 新增元素 概述 HTM…

BOM对象

1、什么是BOM BOM(Browser Object Model)即浏览器对象模型,它提供了独立于内容而与浏览器窗口进行交互的对象,其核心对象是 window。 BOM 由一系列相关的对象构成,并且每个对象都提供了很多方法与属性。 BOM 缺乏标…

B端产品-筛选功能如何设计

相信大家在设计B端产品时,最常打交道的就是列表,而列表最常用的一个功能就是搜索,别小看一个简简单单的搜索功能,其实里边的门道也是有很多的。那么如何设计一个好用的搜索栏呢?今天就与大家分享一下,自己负…

【动态规划篇】最少分割回文 编辑距离 不同的子序列

🌠作者:阿亮joy. 🎆专栏:《数据结构与算法要啸着学》 🎇座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根 目录👉…

音视频技术开发周刊 | 277

每周一期,纵览音视频技术领域的干货。新闻投稿:contributelivevideostack.com。GNNear:基于近内存处理的大规模图神经网络训练加速器图神经网络(GNNs)已经成为分析非欧几里得图数据的最新算法。然而,实现高效的GNN训练是一项挑战&…

西门子1513CPU冗余组态

西门子1513R冗余配置 1、打开博图16软件,新建项目,添加新设备,在弹出的控制器目录下找到CPU 1513R-1 PN硬件,然后系统自动生成PLC_1和PLC_2; 2、打开设备组态中的网络视图,添加接口模块; 3、在…

Springboot 统计 代码执行耗时时间 ,玩法多到眼花

前言 近日群里有萌新提到关于统计代码执行时间的事: 开始 System.currentTimeMillis() 减去 结束 System.currentTimeMillis() 等于 耗时 其实我个人感觉OK的,就这样就蛮好的,很多项目都是这样用的。 简简单单的挺好。 这一篇就是 …

基于Java( jsp+servlet+javabean)+SQL sever 2017实现(Web)高校选课管理系统【100010058】

一、需求分析 开发意义: 随着信息技术不断向深入发展,越来越多的学校开始着手信息化建设。其中学生选课、成绩信息化管理就是其中重要的一块内容。学生选课与成绩信息规模大、项目条数多、信息量庞大,传统的人工管理方式显然已经无法满足要求…

买不到的数目(蓝桥杯C/C++A组真题详解)

题目详细: 题目思路: 对于这个题有一个定理 如果 a,b 均是正整数且互质,那么由 axby,x≥0,y≥0 不能凑出的最大数是 : a*b-a-b 具体的证明过程这里就不赘述 感兴趣的同学可以自行查找 这里就提供一种思…

rk3568 | rk平台GPIO冲突检测小技巧

上一篇我们讲解了如何编写gpio驱动,但是实际操作中,经常发现gpio引脚被占用的情况发生,那么本篇文章就详细讲解rxw平台下如何快速定位gpio复用问题以及如何解决。 一、GPIO寄存器查找 要想查看某个GPIO引脚可以配置的功能以及地址信息&…

Http协议基础

Http 是什么? Http 作为 WWW 的重要组成部分被提出 (World Wide Web) 而当时的 WWW 是为了帮助研究者更好的进行知识共享 基本理念:文档之间的相互关联形成超文本,最终连成相互参阅的 WWW Http (Hyper Text Transfer Protocol) 用于定义文…

QUIC的优势与缺陷

被寄予厚望的下一代互联网传输协议,QUIC究竟有哪些优点呢? 总结如下: 多路复用:QUIC升华了HTTP/2中的多路复用技术,实现了基于互相独立的多流(多通道)数据传输,从根本上解决了TCP存在…

基于C语言学生信息教务管理系统编程设计

一.实现功能 1.从键盘添加学生信息 2.从文件添加学生信息 3.显示学生信息到屏幕 4.显示学生信息到文件 5.删除学生信息 6.插入学生信息 7.查找学生信息 8.成绩排名 二、相关代码 #include<stdio.h> #include<stdlib.h> //使用malloc函数以及exit函数 #include<…

力扣(LeetCode)1759. 统计同构子字符串的数目(C++)

题目描述 双指针数学 根据同构字符串的定义&#xff0c;还有示例&#xff0c;发现同构子字符串的数量&#xff0c;只和字母相同的区间有关。如abbcccaa&#xff0c;有 444 个影响答案的区间&#xff0c;直观切分为a bb ccc aa&#xff0c;用空格划分区间。遍历的任务就是维护这…

灵动岛前端Ui

一、前言 灵动岛&#xff08;Dynamic Island &#xff09;是什么&#xff1f; 灵动岛&#xff0c;是苹果公司iPhone 14 Pro系列 [2] 交互UI&#xff0c;让虚拟软件和硬件的交互变得更为流畅。当有来电、短信等通知时&#xff0c;灵动岛会变化它的形态&#xff0c;以便让用户能…