首页 > 试题

ones是什么意思

更新时间:2022-11-12 11:14:20 阅读: 评论:0

初三利润典型例题讲解-市区英文


2022年11月12日发(作者:孙瑞祥)

python科学计算是什么意思_Python科学计算和数据分析

(NumPy详细介绍)

本⽂介绍的科学计算、数据分析必备基础知识。

本⽂全⽂约2600字,阅读时间约15分钟,请你耐⼼观看。

本⽂使⽤的开发环境是Python3.8,Numpy版本是1.19,本⽂的例⼦全部经过验证,你可以直接使⽤。

NumPy是NumericalPython的简称,它是Python科学计算的基础包。这种⼯具可⽤来存储和处理⼤型矩阵,⽐Python⾃带的列表处理

性能⾼很多,可⽀持数学、逻辑、排序、傅⾥叶、线性代数、统计操作等。

NumPy提供了⼀个N维数组类型ndarray,它描述了“相同类型”的对象集合。ndarray结构

ndarray在存储数据时,数据与数据的地址都是连续的,当⾯对⼤量计算时,NumPy会⾃动做并⾏计算。NumPy底层使⽤C语⾔编写,数

组中直接存储对象,⽽不是对象指针,因此NumPy的运算效率远⾼于Python⾃带的列表类型。

本⽂按照如下结构展开:创建ndarray

数据类型

索引和切⽚

数组转置和轴对称

通⽤函数

1.创建

array函数

创建NumPy最简单的⽅法就是使⽤array函数。它接受⼀切序列型的对象,然后产⽣⼀个新的含有传⼊数据的NumPy数组。以⼀个列表的

转换为例。

>>>data1=[100,30,3,54,15]

>>>arr1=(data1)

>>>arr1

array([100,30,3,54,15])

asarray函数

这个函数的功能与array函数接近,将输⼊转换为ndarray。

>>>importnumpyasnp

>>>data2=[10,20,30,50,100]

>>>arr2=y(data2)

>>>arr2

array([10,20,30,50,100])

与array函数不同的是,如果输⼊本⾝就是⼀个ndarray,就不进⾏复制。

>>>data3=[100,200,300,400,1000]

>>>arr3=(data3)

>>>arr4=y(arr3)

>>>arr5=(arr3)

#传⼊的是列表,asarray产⽣⼀个新的ndarray

>>>print(arr3isarr5)

Fal

#传⼊的是ndarray,asarray不产⽣新的ndarray

>>>print(arr3isarr4)

True

arange函数

类似于内置的range函数,但返回的是⼀个ndarray⽽不是列表。

#不指定起始位置和间隔,默认起始位置是0,间隔是1

>>>arr5=(15)

>>>arr5

array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14])

#指定起始位置和间隔

>>>arr6=(1,50,3)

>>>arr6

array([1,4,7,10,13,16,19,22,25,28,31,34,37,40,43,46,49])

ones函数

根据指定的形状创建⼀个全1数组。

#创建⼀个全1的1维数组,长度是20

>>>arr7=(20)

>>>arr7

array([1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,

1.,1.,1.])

#创建⼀个全1的2维数组,20⾏10列。

>>>arr8=((20,10))

>>>arr8

array([[1.,1.,1.,1.,1.,1.,1.,1.,1.,1.],

[1.,1.,1.,1.,1.,1.,1.,1.,1.,1.],

[1.,1.,1.,1.,1.,1.,1.,1.,1.,1.],

[1.,1.,1.,1.,1.,1.,1.,1.,1.,1.],

[1.,1.,1.,1.,1.,1.,1.,1.,1.,1.],

[1.,1.,1.,1.,1.,1.,1.,1.,1.,1.],

[1.,1.,1.,1.,1.,1.,1.,1.,1.,1.],

[1.,1.,1.,1.,1.,1.,1.,1.,1.,1.],

[1.,1.,1.,1.,1.,1.,1.,1.,1.,1.],

[1.,1.,1.,1.,1.,1.,1.,1.,1.,1.],

[1.,1.,1.,1.,1.,1.,1.,1.,1.,1.],

[1.,1.,1.,1.,1.,1.,1.,1.,1.,1.],

[1.,1.,1.,1.,1.,1.,1.,1.,1.,1.],

[1.,1.,1.,1.,1.,1.,1.,1.,1.,1.],

[1.,1.,1.,1.,1.,1.,1.,1.,1.,1.],

[1.,1.,1.,1.,1.,1.,1.,1.,1.,1.],

[1.,1.,1.,1.,1.,1.,1.,1.,1.,1.],

[1.,1.,1.,1.,1.,1.,1.,1.,1.,1.],

[1.,1.,1.,1.,1.,1.,1.,1.,1.,1.],

[1.,1.,1.,1.,1.,1.,1.,1.,1.,1.]])

zeros函数

类似于ones函数,只不过产⽣的是全0数组⽽已。

>>>arr9=(20)

>>>arr9

array([0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,

0.,0.,0.])

empty函数

创建新数组,只分配内存空间但不填充任何值。

>>>arr10=(15)

>>>arr10

array([6.23042070e-307,7.56587584e-307,1.37961302e-306,1.05699242e-307,

8.01097889e-307,1.78020169e-306,7.56601165e-307,1.02359984e-306,

1.33510679e-306,2.22522597e-306,1.11260144e-306,6.89812281e-307,

2.22522596e-306,0.00000000e+000,0.00000000e+000])

2.数据类型

在上⼀节的基础上,我们介绍dtype,dtype是⼀个特殊的对象,它可以解释ndarray包含的信息。

>>>arr10=([1,2,3],dtype=64)

>>>

dtype('float64')

>>>arr11=([1,2,3],dtype=32)

>>>

dtype('int32')

dtype是Numpy如此强⼤和灵活的原因之⼀,多数情况下,它们直接映射到相应的机器表⽰。

Numpy中处理的数据类型很多,包括浮点数、复数、整数、字符串等。具体来说,如下所⽰。类型说明

int8、uint8有符号和⽆符号的8位(1个字节)整型

int16、uint16有符号和⽆符号的16位(2个字节)整型

int32、uint32有符号和⽆符号的32位(4个字节)整型

int64、uint64有符号和⽆符号的64位(8个字节)整型

float16半精度浮点型

float32标准的单精度浮点型

float64标准的双进度浮点型

float128扩展精度浮点型

complex64分别⽤两个32位浮点数表⽰的复数

complex128分别⽤两个64位浮点数表⽰的复数

complex256分别⽤两个128位浮点数表⽰的复数

objectPython对象类型

string_固定长度的字符串类型

unicode_固定长度的unicode类型

数据类型转换

可以通过ndarray的astype⽅法显⽰地转换其dtype,下⾯的例⼦是将整数显⽰地转换为float64类型。

>>>arr=([1,2,3,4,5])

>>>

dtype('int32')

#将数据类型转换为float64

>>>float_arr=(64)

>>>float_arr

array([1.,2.,3.,4.,5.])

>>>float_

dtype('float64')

也可以将浮点型转换为整数,则⼩数部分将会被截断。

>>>arr=([3.7,-1.2,-10.6,0.88,10.1])

>>>arr

array([3.7,-1.2,-10.6,0.88,10.1])

#将浮点型转换为整型

>>>int_arr=(32)

>>>int_arr

array([3,-1,-10,0,10])

>>>int_

dtype('int32')

3.索引和切⽚

本节将介绍NumPy数组的索引,选取数据的⼦集或单个元素的⽅式有很多种。

>>>arr=(10,100,10)

>>>arr

array([10,20,30,40,50,60,70,80,90])

>>>arr[5]

60

>>>arr[5:8]

array([60,70,80])

>>>arr[5:8]=666

>>>arr

array([10,20,30,40,50,666,666,666,90])

NumPy数组切⽚是原始数据,对新切⽚的操作都将直接作⽤到原始数据上,由于NumPy的设计⽬的是处理⼤数据,如果每次操作都将复制

的话,会降低性能和带来内存问题。

如果想要的是ndarray切⽚的⼀个副本,⽽不是原始数据。就需要显⽰地进⾏复制操作,调⽤copy()函数。

>>>arr

array([10,20,30,40,50,666,666,666,90])

>>>arr2=arr[5:8].copy()

>>>arr

array([10,20,30,40,50,666,666,666,90])

#对arr[5:8]的修改,作⽤于原始数据。

>>>arr[5:8]=777

>>>arr

array([10,20,30,40,50,777,777,777,90])

#对arr2的修改,并不作⽤于原始数据。

>>>arr2=123

>>>arr

array([10,20,30,40,50,777,777,777,90])

4.数组转置

数组转置是将矩阵的⾏和列进⾏变换。

>>>arr=(15).reshape(3,5)

>>>arr

array([[0,1,2,3,4],

[5,6,7,8,9],

[10,11,12,13,14]])

>>>arr.T

array([[0,5,10],

[1,6,11],

[2,7,12],

[3,8,13],

[4,9,14]])

5.通⽤函数

通⽤函数(即ufunc)是⼀种对ndarray中的数据执⾏元素级运算的函数。

>>>arr=([-0.5,-1.1,1.4,-3.5])

>>>arr

[-0.5,-1.1,1.4,-3.5]

>>>(arr)

array([0.5,1.1,1.4,3.5])

>>>(arr)

array([0.25,1.21,1.96,12.25])

上⾯的例⼦是⼀元ufunc的。

完整的⼀元ufunc列举如下:函数说明

abs、fabs计算整数、浮点数或复数的绝对值。对于⾮复数值,可以使⽤更快的fabs

sqrt计算各元素的平⽅根

square计算各元素的平⽅。

exp计算各元素的指数(e为底数)

log、log10、log2分别对⾃然对数(底数为e)、底数为10的log、底数为2的log

sign计算各元素的正负号:1(正数)、0(零)、-1(负数)

ceil计算各元素的ceiling值,即⼤于等于该值的最⼩整数

floor计算各元素的floor值,即⼩于等于该值的最⼤整数

rint将各元素值四舍五⼊到最接近的整数

isnan返回⼀个表⽰“哪些值是Nan”的布尔型数组

isfinite、isinf分别返回⼀个表⽰“哪些元素是有穷的”或“哪些元素是⽆穷的”布尔型数组

cos、cosh、sin、sinh、tan、tanh普通型和双曲型三⾓函数

arccos、arccosh、arcsin、arcsinh、arctan、arctanh反三⾓函数

这⾥使⽤普通三⾓函数举例。

>>>data1=([/2,/6,/6,/3,/2])

>>>(data1)

array([1.,0.5,0.5,0.8660254,1.])

⼆元ufunc函数函数说明

add将数组中对应的元素相加

subtract从第⼀个数组中减去第⼆个数组中的元素

multiply数组相应的元素相乘

divide数组相应的元素相除

power对第⼀个数组中的元素A,根据第⼆个数组中的相应元素B,计算A的B次⽅

maximum元素级的最⼤值计算

minimum元素级的最⼩值计算

mod元素级的求模计算

copysign将第⼆个数组中的值的符号复制给第⼀个数组中的值

greater、greater_equal、less、less_equal、equal、not_equal执⾏元素级的⽐较运算,最终产⽣布尔值数组。相对于运算符>、≥、

<、≤、==、!=

logical_and、logical_or、logical_xor执⾏元素级的真值逻辑运算。相当于运算符&、|、^

>>>data2=([10,20,30,40,50])

>>>data3=([20,30,40,50,60])

>>>data4=([2,3,4,5,4])

>>>(data2,data3)

array([30,50,70,90,110])

>>>ct(data2,data3)

array([-10,-10,-10,-10,-10])

>>>ly(data2,data3)

array([200,600,1200,2000,3000])

>>>(data2,data4)

array([100,8000,810000,102400000,6250000],dtype=int32)

>>>(data3,data2)

array([0,10,10,10,10],dtype=int32)

>>>r(data2,data3)

array([Fal,Fal,Fal,Fal,Fal])

>>>r_equal(data2,data3)

array([Fal,Fal,Fal,Fal,Fal])

>>>(data2,data3)

array([True,True,True,True,True])

>>>_equal(data2,data3)

array([True,True,True,True,True])

>>>(data2,data3)

array([Fal,Fal,Fal,Fal,Fal])

>>>_equal(data2,data3)

array([True,True,True,True,True])

>>>data5=([True,True,Fal,Fal,True])

>>>data6=([Fal,True,True,True,Fal])

>>>l_and(data5,data6)

array([Fal,True,Fal,Fal,Fal])

>>>l_or(data5,data6)

array([True,True,True,True,True])

>>>l_xor(data5,data6)

array([True,Fal,True,True,True])

码字不易,如果真的解决了您的问题。

请您点赞⽀持。

您可以关注我,我会持续回答计算机相关问题。

我有2个Python专栏。1个专门针对Python初学者,⼿把⼿教你⼊门Python;1个专门介绍强⼤的第三⽅库。

本文发布于:2022-11-12 11:14:20,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/88/4202.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:质量分数公式
下一篇:氯酸钾化学式
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图