首页 > 其他分享 >numpy库

numpy库

时间:2023-06-08 23:04:41浏览次数:27  
标签:dtype 数组 np array numpy ndarray size

1.介绍

Numpy (Numerical Python) 是一个开源的 Python 科学计算库,用于快速处理任意维度的数组。(n-任意 d-dimension 维度 array-数组)
Numpy 支持常见的数组和矩阵操作。对于同样的数值计算任务,使用 Numpy 比直接使用 Python 要简洁的多。
Numpy 使用 ndarray 对象来处理多维数组,该对象是一个快速而灵活的大数据容器。
Numpy是一个数值计算库数据结构是ndarray

2.ndarray介绍

NumPy 提供了一个 N 维数组类型 ndarray,它描述了相同类型的"items"的集合

2.1 ndarray的属性

image

属性名字 属性解释
ndarray.shape 数组维度的元组
ndarray.ndim 数组维数
ndarray.size 数组中的元素数量
ndarray.itemsize 一个数组元素的长度(字节)
ndarray.dtype 数组元素的类型
import numpy as np
score = np.array([[80, 89, 86, 67, 79],
[78, 97, 89, 67, 81],
[90, 94, 78, 67, 74],
[91, 91, 90, 67, 69],
[76, 87, 75, 67, 86],
[70, 79, 84, 67, 84],
[94, 92, 93, 67, 64],
[86, 85, 83, 67, 80]])
print(type(score))
print(score.shape)
print(score.dtype)
print(score.size)
<class 'numpy.ndarray'>
(8, 5) #维度
int32 #类型
40 #元素个数

2.2ndarray的形状

例如:

a = np.array([[1,2,3],[4,5,6]])
b = np.array([1,2,3,4])
c = np.array([[[1,2,3],[4,5,6]],[[1,2,3],[4,5,6]]])

a #(2,3)
array([[1, 2, 3],
       [4, 5, 6]])
b#(4,)
array([1, 2, 3, 4])
c(2,2,3)
array([[[1, 2, 3],
        [4, 5, 6]],
       [[1, 2, 3],
        [4, 5, 6]]])

分析一下这个:
array([[1, 2, 3],
[4, 5, 6]]),这个说明一共有二维,第一维就是去掉一个中括号,之后是两个二维的([1, 2, 3],[4,5,6])然后第二位就是4,5,6有三个,所以是(2,3)

array([[[1, 2, 3],
[4, 5, 6]],
[[1, 2, 3],
[4, 5, 6]]])
这个一共有三维(可以看一下这个一个有多少个括号)
去掉最外面的括号之后有两个[[1, 2, 3],[4, 5, 6]],[[1, 2, 3],[4, 5, 6]]
然后取其中一个之后再去掉一个[],之后是两个[1, 2, 3],[4, 5, 6]
然后再取一个去掉[],之后是1,2,3三个
所以这个的形状为(2,2,3)

image

创建数组的时候指定类型
np.array([1.1, 2.2, 3.3], dtype="float32")np.array([1.1, 2.2, 3.3], dtype="float32")

3.生成数组的方法

3.1生成01数组

生成全0
np.zeros(shape=(3,4))
指定类型:np.zeros(shape=(3,4),dtype="flaot32")

生成全1
np.ones(shape(3,4))
指定类型:np.ones(shape=(3,4),dtype=np.int32)

3.2从现有的数组中生成

np.array()
np.copy() #深拷贝
np.asarray() #浅拷贝

深拷贝就是原数组变了之后这个深拷贝的也会变
image
image

3.3生成固定范围的数组

1.np.linspace

np.linspace (start, stop, num, endpoint, retstep, dtype)
start序列的起始值stop序列的终止值,
如果endpoint为true,该值包含于序列中
num 要生成的等间隔样例数量,默认为50
endpoint序列中是否包含stop值,默认为ture
retstep如果为true,返回样例,以及连续数字之间的步长
dtype输出ndarray的数据类型

np.linspace(0,10,5)

返回结果

array([ 0. , 2.5, 5. , 7.5, 10. ])

2.np.arange()

np.arange()
arange(a,b,c) [a,b) c为步长
注意这个右区间是开的

3.4生成随机数组

np.random模块

3.4.1均匀分布(每一组的可能性相等)

np.random.uniform(low=0.0,high=1.0,size=None)
功能:从一个均匀分布[low,high)中随机采样,注意定义域是左闭右开,即包含low,不包含high.
参数介绍:
low:采样下界,float类型,默认值为0;high:采样上界,float类型,默认值为1;
size:输出样本数目,为int或元组(tuple)类型,例如,size=(m,n,k),则输出mnk个样本,缺省时输出1个值。
返回值: ndarray类型,其形状和参数size中描述—致。size=(2,3)生成一个2维2*3的数列

例如:

data1=np.random.uniform(low=-1,high=1,size=10)
data1
array([-0.32389251,  0.25663163,  0.18592025,  0.83991882,  0.94209985,
       -0.41592839,  0.30407462,  0.30773603,  0.07309516, -0.00111122])

np.random.randint(low, high=None, size=None, dtype='/')
从一个均匀分布中随机采样,生成一个整数或N维整数数组,取数范围︰若high不为None时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数。

np.random.randint(low=1, high=100,size=10)
array([47, 95, 22,  4, 39, 44, 59, 25, 42, 63])

3.4.2正态分布

image
这个是常用的:

np.random.normal(loc=0.0, scale=1.0,size=None)
loc: float
此概率分布的均值(对应着整个分布的中心centre)
scale: float
此概率分布的标准差(对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高)
size: int or tuple of ints
输出的shape,默认为None,只输出一个值

data2 = np.random.normal(loc=1.75, scale=0.1, size=1000000)

image

4.切片、索引和形状修改

案例:随机生成8只股票2周的交易日涨幅数据

stock_change = np.random.normal(loc=0, scale=1, size=(8, 10))
stock_change
array([[-1.57018774, -1.25970766, -2.3796732 ,  1.14848963, -0.30345475,
         1.20735246, -1.52672555,  0.13540022,  0.84785041,  0.61968931],
       [ 0.61505944, -0.46245204, -0.94052479,  0.29319442, -0.25777012,
         1.93851043,  1.61619433,  0.16969634,  1.59050888,  0.0138765 ],
       [ 0.07429565,  0.56954703,  0.3926989 ,  0.90978652, -0.61529256,
         1.47658577, -2.01634565,  0.35092389,  1.3432413 , -0.28950357],
       [ 0.79408811, -0.32485522,  0.19922215,  1.23239335,  1.19632515,
         0.5691303 , -1.13906447,  0.3843912 , -0.38900849,  0.38448067],
       [-1.12731803,  1.4888357 , -0.65074985, -1.03021949,  0.96198375,
        -0.93488657, -0.57725512,  0.86569825, -0.06399348, -0.58289178],
       [ 0.14884572, -1.15397656,  0.1978762 ,  0.70838332, -1.90472605,
         1.0220865 ,  0.23101243, -0.80568295,  2.13918437, -1.73500104],
       [-0.27744519,  1.65703998,  1.40726915,  0.2631683 , -0.18302691,
         0.56395719, -2.74668778, -0.04663681, -0.67760237,  0.87581514],
       [ 0.17755502, -0.95923995, -0.19681983, -0.54050483, -1.88367949,
         0.16945743, -0.04160143, -2.12832587,  0.17009967, -0.77175123]])

4.1切片操作

获取第一个股票的前3个交易日的涨跌幅数据

也就是从stock_change[0][0]到stock_change[0][2]
然后这个就是

stock_change[0, 0:3]
#这个代码就是第一维是0,然后第二维是[0,3)
array([-1.57018774, -1.25970766, -2.3796732 ])

4.2数组的索引

如果是查看的话直接:a[1][0][2]
image

修改的话直接赋值就行a[1][0][2]=10000
image

4.3形状的修改

需求:让刚才的股票行、日期列反过来,变成日期行,股票列
就是行,列反转

4.3.1 ndarray.reshhape()

4.3.2 ndarray.resize()

4.3.3 ndarray.T

标签:dtype,数组,np,array,numpy,ndarray,size
From: https://www.cnblogs.com/lipu123/p/17467450.html

相关文章

  • CentOS 6.9 python3.10 numpy 安装使用 - gcc 升级
    踩坑记录程序写好了,使用了pandas,放在服务器上,运行报错:Originalerrorwas:/lib64/libgcc_s.so.1:version`GCC_4.8.0'notfound(requiredby/usr/local/lib/python3.10/site-packages/numpy/core/../../numpy.libs/libgfortran-040039e1.so.5.0.0)可以看到是导入numpy......
  • NumPy学习7
    今天学习了: 13,NumPy字符串处理函数14,NumPy数学函数15,NumPy算术运算numpy_test7.py:importnumpyasnp'''13,NumPy字符串处理函数NumPy处理字符串数组函数函数名称 描述add() 对两个数组相应位置的字符串做连接操作。multiply() 返回多个字符串副本,比如......
  • [Python]-numpy模块-反转数组的三种方法
    给定一个一维numpy数组,反转数组的三种方法:切片索引numpy.flipud()函数numpy.flip()函数importnumpyasnpa=np.array([1,2,3,4,5])#切片索引ans1=a[::-1]print(ans1)#[54321]#numpy.flipud()函数ans2=np.flipud(a)print(ans2)#[54321]#n......
  • 这8个NumPy函数可以解决90%的常见问题
    NumPy是一个用于科学计算和数据分析的Python库,也是机器学习的支柱。可以说NumPy奠定了Python在机器学习中的地位。NumPy提供了一个强大的多维数组对象,以及广泛的数学函数,可以对大型数据集进行有效的操作。这里的“大”是指数百万行。Numpy快速而高效的原因是底层的C代码,这比使用......
  • NumPy学习6
    今天学习 NumPy位运算 12,NumPy位运算NumPy中提供了以下按位运算函数:numpy按位运算函数序号函数位运算符描述说明1bitwise_and&计算数组元素之间的按位与运算。2bitwise_or|计算数组元素之间的按位或运算。3invert~计算数组元素之间的按位取反运算。......
  • python numpy 深拷贝 浅拷贝
    importnumpyasnpimportcopya=np.mat("123;456;789")print(a)b=ab[0,0]=0print(a)print(b)print("-"*10)输出结果[[123][456][789]][[023][456][789]][[023][456][789]]----------可以看到直接赋值时改变b同时......
  • 在树莓派上实现numpy的LSTM长短期记忆神经网络做图像分类,加载pytorch的模型参数,推理mn
    这几天又在玩树莓派,先是搞了个物联网,又在尝试在树莓派上搞一些简单的神经网络,这次搞得是LSTM识别mnist手写数字识别训练代码在电脑上,cpu就能训练,很快的:importtorchimporttorch.nnasnnimporttorchvisionimportnumpyasnpimportosfromPILimportImage#定义LSTM......
  • Numpy_数据选取和过滤
    索引的不同numpy多维数组索引data[0,1]定位一个指定的具体数值,没有维度data[0,:]定位一维数组data[:,:]定位二维数组importnumpyasnpif__name__=="__main__":a=np.array([[[0,1,2],[3,4,5],[6,7,8]],......
  • NumPy学习5
    今天学习了11,NumPy数组元素增删改查NumPy数组元素的增删改查操作,主要有以下方法:数组元素操作方法函数名称描述说明resize返回指定形状的新数组。append将元素值添加到数组的末尾。insert沿规定的轴将元素值插入到指定的元素前。delete删掉某个轴上的子数组,并返回删除后......
  • 在树莓派上实现numpy的conv2d卷积神经网络做图像分类,加载pytorch的模型参数,推理mnist
    这几天又在玩树莓派,先是搞了个物联网,又在尝试在树莓派上搞一些简单的神经网络,这次搞得是卷积识别mnist手写数字识别训练代码在电脑上,cpu就能训练,很快的:importtorchimporttorch.nnasnnimporttorch.optimasoptimfromtorchvisionimportdatasets,transformsimportn......