初识 Python 科学计算库之 NumPy(创建多维数组对象)

news2024/11/13 9:21:30

文章目录

  • 参考
  • 描述
  • NumPy
      • 特点
      • 获取
      • 导入
      • 多维数组对象
  • np.array()
      • np.asarray()
  • 范围
  • 随机
      • 概览
      • np.random.randn()
      • np.random.normal()
      • np.random.choice()
      • np.random.random()
      • np.random.randint()
      • np.random.shuffle()
      • np.random.seed()
  • 数列
      • 等差数列
      • 等比数列
  • 填充
      • np.zeros()
      • np.zeros_like()
      • np.full()
      • np.full_like()
  • 细节
      • 修改形状

参考

项目描述
菜鸟教程NumPy 教程
NumPyAPI reference
利用 Python 进行数据分析韦斯·麦金尼 / 徐敬一 译
搜索引擎Bing

描述

项目描述
Jupyter Notebook6.5.2
Python3.9.13

NumPy

Numpy

NumPy(Numerical Python) 是一个开源的 Python 第三方库,几乎用于每个科学和工程领域。
NumPy 与 SciPy、Matplotlib、SciKits 等其他众多 Python 科学计算库很好的结合在一起,共同构建了一个完整的科学计算生态系统。

特点

  1. NumPy 支持广泛的硬件及计算平台,并且可以很好地使用分布式、 GPU 和稀疏数组库。

  2. NumPy 可以同时针对整个数组中的每个元素进行复杂计算而不需要使用到 Python 循环。

  3. NumPy 在内部将数据存储在连续的内存空间中(有利于提高数据的处理速度),这与 Python 中的其他序列结构的存储方式是不同的。

  4. 存储相同的数据,NumPy 使用的内存量小于 Python 中的其他序列结构。

  5. NumPy 的多维数组对象仅支持相同数据类型的数据,因此,NumPy 并不适合用于科学计算之外的领域。

  6. NumPy 的大部分代码是通过 C 语言进行编写的,这使得 NumPy 对数据的处理十分高效。

获取

若你的计算机已经安装了 Python 的包管理器 PIP(Package Installer for Python),那么你可以通过如下命令来对 NumPy 进行下载安装。

pip install numpy

导入

如果你需要在 Python 中使用 NumPy,请以这样的方式对其进行导入:

import numpy as np

多维数组对象

NumPy 定义了一个 n 维数组对象,简称 ndarray(N Dimensional Array) 对象,它是一个一系列相同数据类型的元素组成的集合,数组中的每个元素均占有大小相同的内存块。

np.array()

np.array() 可以将 Python 内置的序列对象转换为多维数组对象。

np.array(object, dtype = None, ndmin = 0)

其中:

项目描述
object需要转换为多维数组对象的 Python 内置对象。
dtye多维数组对象中的元素的数据类型。
ndmin规定多维数组的最低维度。

注:

请不要试图使用 np.array() 将数组及列表以外的 Python 内置结构转换为多维数组对象。如果需要这样做,请先将该数据结构转换为列表或元组。
虽然使用 np.array() 能够将数组及列表以外的 Python 内置结构转换为多维数组对象,但这样做并没有什么意义(多数情况下,np.array() 会将这类数据结构转换为包含单个该数据结构的一维数组)。

import numpy as np

arr = np.array({1, 3, 6})
print(arr)
print(type(arr))

打印结果:

{1, 3, 6}
<class ‘numpy.ndarray’>

错误

如果你试图对创建的数组进行运算,Python 将抛出错误信息,因为使用 np.array() 将集合转换为多维数组对象的结果是包含一个集合的一维数组对象。

import numpy as np

arr = np.array((1, 3, 6)) 
print(arr)
print(arr + 1)

print('---------------------------')

arr1 = np.array({1, 3, 6})
print(arr1)
print(arr1 + 1)

打印结果:

[1 3 6]
[2 4 7]
---------------------------
{1, 3, 6}

错误信息:

错误信息

np.asarray()

与 np.array() 类似的函数还有 np.asarray(),该函数与 np.arrary() 的功能类似,但该函数所支持的参数相比 np.arrary() 更少。

np.asarray(a, dtype=None)

其中:

a 为需要转换为多维数组对象的序列对象(列表或元组)。

范围

使用 np.arange() 创建多维数组对象,我们可以达到与 Python 内建函数 range() 函数类似的效果。

np.arange([start, ]stop, [step, ]dtype=None)

其中:

项目描述
start起始值。
stop中止值。生成的多维数组对象中不包含中止值。
step步长。
dtype多维数组对象中的元素的数据类型。

举个栗子

import numpy as np

arr = np.arange(3, 37, 3)
print(arr)

打印结果:

[ 3  6  9 12 15 18 21 24 27 30 33 36]

随机

概览

NumPy 中提供了如下函数来生成包含随机数的多维数组对象(部分):

项目描述
np.random.randn()使用 np.random.randn() 函数你将从 均值为 0 方差为 1 的样本 中抽取指定数量的元素组成指定形状的多维数组对象。
np.random.normal()使用 np.random.normal() 函数可以从指定正态分布样本中抽取指定数量的数据以创建指定形状的多维数组对象。
np.random.choice()使用 np.random.choice() 函数可以从指定的 一维序列 中抽取指定数量的数据以创建指定形状的多维数组对象。
np.random.random()使用 np.random.random() 函数可以从 [0, 1) 的样本中抽取指定数量的数值用以创建指定形状的多维数组对象。
np.random.randint()你可以通过使用 np.random.randint() 从指定的范围的整数样本中抽取一定数量的数据以创建指定形状的多维数组对象。
np.random.shuffle()使用 np.random.shuflle() 函数能将传递给该函数的序列打乱顺序并创建相应的多维数组对象。
np.random.seed()你可以通过向 np.random.seed() 函数传递数值来设定使用的随机数种子。

np.random.randn()

使用 np.random.randn() 函数你将从 均值为 0 方差为 1 的样本 中抽取指定数量的元素组成指定形状的多维数组对象。

举个栗子

import numpy as np

arr = np.random.randn(2, 3, 3)
print(arr)

打印结果

[[[-0.0480595   0.56356363 -0.21505354]
  [ 0.44823873 -1.11214077 -0.52324077]
  [-0.19093371  0.05920201 -2.22010313]]

 [[ 1.06321783 -0.17210113  0.65355918]
  [-0.65389436 -0.76957588  1.17436737]
  [ 1.06294231  0.79249734  0.1901463 ]]]

注:

当你没有提交实参给 np.random.randn() 函数时,该函数将返回仅包含一个元素(从 均值为 0 方差为 1 的样本 中抽取)的数组。

np.random.normal()

使用 np.random.normal() 函数可以从指定正态分布样本中抽取指定数量的数据以创建指定形状的多维数组对象。

np.random.normal(loc=0.0, scale=1.0, size=None)

其中:

项目描述
loc用于指定正态分布的期望值。
scale用于指定正态分布的标准差。
size用于指定生成的多维数组对象的形状,省略该参数将获得包含一个从指定正态分布样本中抽取的数据的多维数组对象。

举个栗子

import numpy as np

arr = np.random.normal(loc=0, scale=2, size=(2, 3))
print(arr)

打印结果:

[[ 1.01480683  4.4998025   5.78320235]
 [-1.22391397 -0.26704833  2.15595718]]

np.random.choice()

使用 np.random.choice() 函数可以从指定的 一维序列 中抽取指定数量的数据以创建指定形状的多维数组对象。

np.random.choice(a, size=None, p=None)

其中:

项目描述
a指定一个一维序列作为样本。当你使用数值作为该形参对应的实参时,将自动使用 np.arange() (将数值作为该函数的参数)创建多维数组对象。
size指定创建的多维数组对象的形状。
p你可以通过该参数提供一个与样本相同长度的一维序列,该序列中的元素将与样本中的同位置元素一一对应,作为样本中对应元素被抽取到的概率。概率之和需要为 1,否则将抛出错误。

举个栗子

import numpy as np

arr = [1, 2, 3, 4]
result = np.random.choice(arr, size=(8, 8), p=[0.1, 0.1, 0.7, 0.1])
print(result)

打印结果:

[[1 1 3 2 3 3 3 2]
 [3 3 3 3 3 3 1 4]
 [3 4 1 3 4 3 4 3]
 [3 3 3 3 2 3 3 3]
 [2 3 3 3 1 1 2 4]
 [3 3 1 3 3 3 3 3]
 [3 3 3 3 1 3 3 2]
 [3 3 4 3 3 2 2 3]]

np.random.random()

使用 np.random.random() 函数可以从 [0, 1) 的样本中抽取指定数量的数值用以创建指定形状的多维数组对象。

np.random.random(size=None)

举个栗子

import numpy as np

result = np.random.random((1, 2))
print(result)

打印结果:

[[0.52577711 0.36884136]]

np.random.randint()

你可以通过使用 np.random.randint() 从指定的范围的整数样本中抽取一定数量的数据以创建指定形状的多维数组对象。

np.random.randint(low, high=None, size=None, dtype=int)

其中:

项目描述
low指定样本中整数的最小值,可以通过数组进行指定。
high指定样本中整数的最大值(样本中不包含最大值),可以通过数组进行指定。
size指定创建的多维数组对象的形状。
dtype指定多维数组对象中各个元素的数据类型。

如果 high 被省略,则样本数据中的整数范围为 [0, low)

创建一个包含最大整数为 9,最小整数为 3 的 3 * 3 多维数组对象

import numpy as np

result = np.random.randint(3, 10, size=(3, 3))
print(result)

打印结果:

[[5 7 4]
 [9 5 8]
 [8 8 9]]

创建一个包含最小整数分别为 2、3、4,最大整数分别为 7、8、9 的多维数组对象

import numpy as np

result = np.random.randint([2, 3, 4], [8, 9, 10])
print(result)

打印结果:

[3 8 7]

注:

如果最小值与最大值是多对多的情况,则提交给 np.random.randint() 函数的最小值与最大值相关的序列中的元素需要相同,否则 Python 将抛出错误。例如:

import numpy as np

result = np.random.randint([2, 3, 4], [8, 9])
print(result)

抛出错误:

错误信息

创建一个包含最小整数分别为 2、3、4,最大整数分别为 7、8、9 的多维数组对象(指定形状)

import numpy as np

result = np.random.randint([2, 3, 4], [8, 9, 10], size=(4, 2, 3))
print(result)

打印结果:

[[[2 5 4]
  [2 4 7]]

 [[4 5 9]
  [4 8 7]]

 [[5 4 7]
  [7 6 8]]

 [[3 6 6]
  [7 7 5]]]

注:

指定形状时,需要保证创建的多维数组对象中最低维度的数组的列数与传递给lowhigh 参数的数组中列数最多的那一个数组的列数保持一致,否则将抛出错误。例如:

import numpy as np

result = np.random.randint([2, 3, 4], [8, 9, 10], size=(4, 2, 4))
print(result)

抛出错误:

错误信息

创建一个包含最小整数为 2,最大整数分别为 7、8、9 的多维数组对象(指定形状)

import numpy as np

result = np.random.randint(2, [8, 9, 10], size=(4, 2, 3))
print(result)

打印结果:

[[[6 8 7]
  [5 2 9]]

 [[4 8 9]
  [2 4 8]]

 [[7 7 8]
  [6 5 5]]

 [[4 2 2]
  [2 2 9]]]

np.random.shuffle()

使用 np.random.shuflle() 函数能将传递给该函数的序列打乱顺序并创建相应的多维数组对象。

举个栗子

import numpy as np

arr = [1, 3, 6]
result = np.random.shuffle(arr)
print(arr)
print(result)

打印结果:

[3, 6, 1]
None

注:

该函数将会影响到原序列,请小心使用。

np.random.seed()

程序中产生的随机数均为伪随机数,因为这些随机数都是由具有确定性行为的算法根据随机数生成器中的随机数中子生成的。

你可以通过向 np.random.seed() 函数传递数值来设定使用的随机数种子。

举个栗子

import numpy as np

np.random.seed(3)
result = np.random.random((3, 4))
print(result)

多次执行上述代码,你都将获得如下打印结果:

[[0.5507979  0.70814782 0.29090474 0.51082761]
 [0.89294695 0.89629309 0.12558531 0.20724288]
 [0.0514672  0.44080984 0.02987621 0.45683322]]

你也可以不向 np.random.seed() 函数传递数值来取消对随机数种子的指定。

举个栗子

import numpy as np

np.random.seed(3)
np.random.seed()
result = np.random.random((3, 4))
print(result)

多次执行上述代码,你将获得不同的打印结果。

数列

等差数列

你可以使用 numpy.linspace() 函数用于创建一个包含等差数值的一维数组。

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

其中:

项目描述
start等差数列的起始值。
stop等差数列的终止值,如果参数 endpointTrue,则该值将被包含于数列中。
num等差数列中的元素个数。
endpoint该值为 True 时,等差数列中将包含 stop 参数对应的值。
retstep如果该参数的值为 True ,则生成的数组中将会显示间距。
dtype多维数组中各个元素的数据类型。

举个栗子

import numpy as np

arr = np.linspace(1, 36, num=20, retstep=True)
arr1 = np.linspace(1, 36, num=20)
print(arr)
print()
print(arr1)

打印结果:

(array([ 1.        ,  2.84210526,  4.68421053,  6.52631579,  8.36842105,
       10.21052632, 12.05263158, 13.89473684, 15.73684211, 17.57894737,
       19.42105263, 21.26315789, 23.10526316, 24.94736842, 26.78947368,
       28.63157895, 30.47368421, 32.31578947, 34.15789474, 36.        ]), 1.8421052631578947)

[ 1.          2.84210526  4.68421053  6.52631579  8.36842105 10.21052632
 12.05263158 13.89473684 15.73684211 17.57894737 19.42105263 21.26315789
 23.10526316 24.94736842 26.78947368 28.63157895 30.47368421 32.31578947
 34.15789474 36.        ]

等比数列

你可以使用 numpy.linspace() 函数用于创建一个包含等差数值的一维数组。

np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)

其中:

项目描述
start等比数列的起始值为 start ** base
stop等比数列的终止值 stop ** base,如果参数 endpointTrue,则该值将被包含于数列中。
num等比数列中的元素个数。
endpoint该值为 True 时,等比数列中将包含 stop 参数对应的值。
base指定等比数列的公比。
dtype多维数组中各个元素的数据类型。

举个栗子

import numpy as np

arr = np.logspace(1, 10, num=10, base=2)
print(arr)

打印结果:

[   2.    4.    8.   16.   32.   64.  128.  256.  512. 1024.]

填充

np.zeros()

np.zeros() 函数可用于创建指定形状的多维数组,该数组中的元素均为 0

np.zeros(shape, dtype=float)

其中

项目描述
shape用于指定多维数组对象的形状。
dtype用于指定多维数组对象中的元素的数据类型。如果省略该参数,将使用默认值 np.float64

举个栗子

import numpy as np

arr = np.zeros((3, 4))
print(arr)

打印结果:

[[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]

与 np.zeros() 类似的其他函数

项目描述
np.ones()np.ones() 函数可用于创建指定形状的多维数组,该数组中的元素均为 1

np.zeros_like()

np.zeros_like() 函数可用于创建与指定序列相同形状的多维数组,该数组中的元素均为 0

np.zeros_like(a, dtype=None, shape=None)

举个栗子

import numpy as np

arr = [[1, 2, 3], [4, 5, 6]]
result = np.zeros_like(arr)
print(result)

打印结果:

[[0 0 0]
 [0 0 0]]

注:

当然你也可以通过该函数的 shape 属性来创建指定形状的数组。

import numpy as np

arr = [[1, 2, 3], [4, 5, 6]]
result = np.zeros_like(arr, shape=(2, 2))
print(result)

打印结果:

[[0 0]
 [0 0]]

shape 指定的形状可以与传递给该函数的数组不同。

与 np.zeros_like() 类似的函数

项目描述
np.ones_like()np.ones_like() 函数可用于创建与指定序列相同形状的多维数组,该数组中的元素均为 1

np.full()

np.full() 函数可用于创建指定形状的多维数组,并且你可以指定该数组中的所有元素的值。

np.full(shape, fill_value, dtype=None)

其中:

项目描述
shape用于指定多维数组对象的形状。
fill_value用于指定多维数组中所有元素的值。
dtype指定多维数组中元素的数据类型。

举个栗子

import numpy as np

arr = np.full((3, 6), fill_value=6)
print(arr)

打印结果:

[[6 6 6 6 6 6]
 [6 6 6 6 6 6]
 [6 6 6 6 6 6]]

np.full_like()

np.full_like() 函数可用于创建与指定序列相同形状的多维数组,并且你可以指定该数组中的所有元素的值。

np.full_like(a, fill_value, dtype=None, shape=None)

注:

shape 指定的形状可以与传递给该函数的数组不同。

细节

修改形状

某些函数没有提供设定创建的多维数组对象的形状的参数,但我们可以通过使用 ndarray (即多维数组对象)对象的 reshape() 方法来修改多维数组对象的形状。

举个栗子

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])
arr1 = arr.reshape((2, 3))
print(arr)
print()
print(arr1)

打印结果:

[1 2 3 4 5 6]

[[1 2 3]
 [4 5 6]]

注:

ndarray 对象的 reshape() 方法并不会修改原数组,该方法将返回一个新的 ndarray 对象。

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

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

相关文章

Spotify Q4用户增长再超预期,但为何还是赚不到钱?

2022年&#xff0c;美联储接连7次暴力加息&#xff0c;科技行业整体低迷&#xff0c;从Meta、Google再到亚马逊&#xff0c;大型科技公司接连宣告裁员过冬。 寒气已经传递到了更广阔的地方。1月下旬&#xff0c;瑞典音乐流媒体巨头Spotify宣布将裁员6%。 音乐流媒体的生意变得…

Python自动化测试实战篇(1)读取xlsx中账户密码,unittest框架实现通过requests接口post登录网站请求,JSON判断登录是否成功

Python接口项目实战篇&#xff08;1&#xff09;读取xlsx中账户密码&#xff0c;unittest框架实现通过requests接口post登录网站请求&#xff0c;JSON判断登录是否成功实现功能描述1.首先获取到接口谷歌浏览器中获取接口信息fiddler里面抓取接口信息2.创建一个xlsx文档3.导入我…

【C++】继承详解

目录继承的概念及定义继承的概念继承的定义定义格式继承关系和访问限定符继承基类成员访问方式的变化基类和派生类对象的赋值转换继承中的作用域派生类的默认成员函数继承和友元继承与静态成员复杂的菱形继承及菱形的虚拟继承菱形继承的概念虚拟继承**虚拟继承的原理**&#xf…

IT6512可编程直流电源的工作原理

现在各种的电子设备不断的发展&#xff0c;它们对直流供电的电源也有了更高的要求&#xff0c;相对于电子设备来说&#xff0c;用单一的直流电源是没有办法达到供电的要求&#xff0c;所以需要不同的直流电源来给电子设备供电。可编程直流电源就是这一种。在生产测试中&#xf…

Pandas的apply, map, transform介绍和性能测试

apply函数是我们经常用到的一个Pandas操作。虽然这在较小的数据集上不是问题&#xff0c;但在处理大量数据时&#xff0c;由此引起的性能问题会变得更加明显。虽然apply的灵活性使其成为一个简单的选择&#xff0c;但本文介绍了其他Pandas函数作为潜在的替代方案。 在这篇文章…

软测(基础)· 软件测试的生命周期 · 如何描述一个 Bug · Bug 的级别 · Bug 的生命周期 · 争执 · Bug 评审

一、软件测试的生命周期软件测试的生命周期 & 软件开发的生命周期二、如何描述一个 Bug三、如何定义 Bug 的级别四、Bug 的生命周期五、发生争执了怎么办&#xff1f;Bug 评审一、软件测试的生命周期 软件测试的生命周期&#xff1a;需求分析 → 测试计划 → 测试设计、测…

《巫师3:狂猎》4.01版更新 PC端已上线

去年12月&#xff0c;《巫师3》免费升级次世代版&#xff0c;加入DLSS 3支持&#xff0c;RTX 40系显卡的用户能直接提升体验感&#xff0c;RTX 30系用户能通过DLSS 2获得更稳定的帧数。 目前。《巫师3&#xff1a;狂猎》4.01版已更新上线&#xff0c;在PC、PlayStation 和 Xbo…

【配电网规划】配电网N-1扩展规划研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

OJ万题详解––[NOIP2010 提高组] 机器翻译(C++详解)

题目背景 小晨的电脑上安装了一个机器翻译软件&#xff0c;他经常用这个软件来翻译英语文章。 题目描述 这个翻译软件的原理很简单&#xff0c;它只是从头到尾&#xff0c;依次将每个英文单词用对应的中文含义来替换。对于每个英文单词&#xff0c;软件会先在内存中查找这个单词…

openstack cinder对接两个ceph后端配置

需求 需要做卷迁移的工作&#xff0c;从一个ceph集群迁移到另一个集群&#xff0c;因此需要配置两个ceph后端。由此开展后续工作&#xff0c;将配置过程及出现的问题做一记录。 另外两套ceph后端的访问用户都是cinder用户&#xff0c;网上找的资料均为两个用户&#xff0c;当为…

电子技术——BJT的物理结构

电子技术——BJT的物理结构 本节我们介绍另一种基本三端元件&#xff0c;BJT。 物理结构 下图展示了NPN型和PNP型BJT的物理结构简图。 从图中看出&#xff0c;BJT主要由三个区域组成&#xff0c;发射极&#xff08;n类型&#xff09;&#xff0c;基极&#xff08;p类型&#…

如何跑起一个Python Flask 项目

最近做项目迁移&#xff0c;从Google cloud 迁移到 AWS项目&#xff1a;Python Flask ORM是Alembic(我不是搞python的 这边看到这个了)python 是docker 跑起来的&#xff0c;一个docker-compose up就完事但我要进行数据库迁移测试&#xff0c;所以本地要跑起来我是mac先安装pyt…

财报解读:大裁员后Meta的元宇宙还有新故事吗?

美股科技巨头Facebook自更名为Meta Platforms后全面发力元宇宙&#xff0c;作为美国第一大社交平台以及全球流量池&#xff0c;转型后的Meta一度被市场寄予厚望&#xff0c;但同样受累于其元宇宙策略&#xff0c;年初至今&#xff0c;Meta的股价累计一度下跌近65%&#xff0c;也…

【超详细】一文看懂如何在PyCharm中集成Git

PyCharm环境集成Git 当我们在官网下载好Git后&#xff0c;按照要求进行安装&#xff0c;就可以通过快捷方式对本地仓库进行版本控制啦。但是这种方式处理整个工作环境还是比较麻烦的&#xff0c;接下来&#xff0c;我们将在PyCharm环境中配置Git。 基础配置 在设置中&#xf…

IPV6基本了解

参考&#xff1a;https://support.huawei.com/enterprise/zh/doc/EDOC1100116138#ZH-CN_TOPIC_0204809629&#xff0c; https://www.w3cschool.cn/ipv6/ipv6_address_types.html IPv6地址结构 和IPv4的10进制的表示方式不同&#xff0c;IPv6使用的是16进制的表示方式。 首先基…

FreeRTOS内存管理

内存管理是一个系统基本组成部分&#xff0c;FreeRTOS 中大量使用到了内存管理&#xff0c;比 如创建任务、信号量、队列等会自动从堆中申请内存。用户应用层代码也可以使 用 FreeRTOS 提供的内存管理函数来申请和释放内存。本章要实现的功能是&#xff1a;使 用 heap_4.c 方案…

剑指Offer 第21天 不用加减乘除做加法 二进制中1的个数

剑指 Offer 65. 不用加减乘除做加法 写一个函数&#xff0c;求两个整数之和&#xff0c;要求在函数体内不得使用 “”、“-”、“*”、“/” 四则运算符号。 int add(int a, int b) {while(b ! 0){unsigned int c (unsigned)(a & b)<<1;a a ^ b;b c;}return a;} 剑…

Linux安装Mysql5.5

链接&#xff1a;https://pan.baidu.com/s/146KA6VfB4NW6mWSRRwXsMg 提取码&#xff1a;ib17 rpm安装Mysql5.5 检测Mysql是否安装 强制卸载原来的Mysql 安装Mysql服务端 安装Mysql客户端 启动Mysql------> service mysql start 连接Mysql------->mysql -u ro…

时序数据库

时序数据库(TSDB) 接下来就到了&#xff0c;自己所适应行业的数据库了&#xff0c;时许数据库&#xff0c;这类对物联网传感器数据有着很好的支持。 https://blog.csdn.net/firewater23/article/details/125697248 时序数据是随时间不断产生的一系列数据&#xff0c;简单来说…

AD936x_增益控制AGC详解

增益控制概述 所有AGC模式都可用于TDD和FDD场景。AD936x具有手动增益控制选项&#xff0c;允许基带处理器控制接收机的增益。 上图为AD936x接收信号路径示意图&#xff0c;每个接收机都有自己的增益表&#xff0c;将增益控制字映射到每个可变增益块。无论使用AGC还是手动增益控…