博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Numpy数组
阅读量:5163 次
发布时间:2019-06-13

本文共 3349 字,大约阅读时间需要 11 分钟。

ndarray.ndim

数组的轴(维度)的个数。在Python世界中,维度的数量被称为rank

ndarray.shape

数组的维度。这是一个整数的元组,表示每个维度中数组的大小。对于具有n行和m列的矩阵,shape将是(n,m)因此,shape元组的长度就是rank或维度的个数ndim

ndarray.size

数组元素的总数。这等于shape的元素的乘积。

ndarray.dtype

描述数组中元素类型的对象。可以使用标准Python类型创建或指定dtype。另外NumPy提供了自己的类型。例如numpy.int32、numpy.int16和numpy.float64。

ndarray.itemsize

数组中每个元素的字节大小。例如,元素为float64类型的数组的itemsize为8(=64/8),而complex32类型的数组的comitemsize为4(=32/8)。它等于ndarray.dtype.itemsize

 

 

创建数组的几种方法

 

>>> import numpy as np>>> a = np.array([2,3,4])>>> aarray([2, 3, 4])>>> a.dtypedtype('int64')>>> b = np.array([1.2, 3.5, 5.1])>>> b.dtypedtype('float64')

 

>>> b = np.array([(1.5,2,3), (4,5,6)])>>> barray([[ 1.5,  2. ,  3. ],       [ 4. ,  5. ,  6. ]])

 

 

数组的类型也可以在创建时明确指定:

>>> c = np.array( [ [1,2], [3,4] ], dtype=complex )>>> carray([[ 1.+0.j,  2.+0.j],       [ 3.+0.j,  4.+0.j]])

 

 

能够创建数组的几个函数

 

NumPy提供了几个函数来创建具有初始占位符内容的数组。

函数zeros创建一个由0组成的数组,函数ones创建一个由1数组的数组,函数empty内容是随机的并且取决于存储器的状态。默认情况下,创建的数组的dtype为float64

>>> np.zeros( (3,4) )array([[ 0.,  0.,  0.,  0.],       [ 0.,  0.,  0.,  0.],       [ 0.,  0.,  0.,  0.]])>>> np.ones( (2,3,4), dtype=np.int16 )                # dtype can also be specifiedarray([[[ 1, 1, 1, 1],        [ 1, 1, 1, 1],        [ 1, 1, 1, 1]],       [[ 1, 1, 1, 1],        [ 1, 1, 1, 1],        [ 1, 1, 1, 1]]], dtype=int16)>>> np.empty( (2,3) )                                 # uninitialized, output may varyarray([[  3.73603959e-262,   6.02658058e-154,   6.55490914e-260],       [  5.30498948e-313,   3.14673309e-307,   1.00000000e+000]])

 

为了创建数字序列,NumPy提供类似于range的函数,返回数组而不是列表。

>>> np.arange( 10, 30, 5 )array([10, 15, 20, 25])>>> np.arange( 0, 2, 0.3 )                 # it accepts float argumentsarray([ 0. ,  0.3,  0.6,  0.9,  1.2,  1.5,  1.8])

  

arange与浮点参数一起使用时,由于浮点数的精度是有限的,通常不可能预测获得的元素数量。出于这个原因,通常最好使用函数linspace,它接收我们想要的元素数量而不是步长作为参数:

>>> from numpy import pi>>> np.linspace( 0, 2, 9 )                 # 9 numbers from 0 to 2array([ 0.  ,  0.25,  0.5 ,  0.75,  1.  ,  1.25,  1.5 ,  1.75,  2.  ])>>> x = np.linspace( 0, 2*pi, 100 )        # useful to evaluate function at lots of points>>> f = np.sin(x)

  

另见

, , , , , , , , ,, , , 

 

 

打印数组

 

如果数组太大而无法打印,NumPy会自动跳过数组的中心部分,并只打印边角:

>>> print(np.arange(10000))[   0    1    2 ..., 9997 9998 9999]>>>>>> print(np.arange(10000).reshape(100,100))[[   0    1    2 ...,   97   98   99] [ 100  101  102 ...,  197  198  199] [ 200  201  202 ...,  297  298  299] ..., [9700 9701 9702 ..., 9797 9798 9799] [9800 9801 9802 ..., 9897 9898 9899] [9900 9901 9902 ..., 9997 9998 9999]]

  

要禁用此行为并强制NumPy打印整个数组,你可以使用set_printoptions更改打印选项。

>>> np.set_printoptions(threshold='nan')

 

 

基本操作

数组上的算术运算符使用元素级别将创建一个新数组并用结果填充。

>>> a = np.array( [20,30,40,50] )>>> b = np.arange( 4 )>>> barray([0, 1, 2, 3])>>> c = a-b>>> carray([20, 29, 38, 47])>>> b**2array([0, 1, 4, 9])>>> 10*np.sin(a)array([ 9.12945251, -9.88031624,  7.4511316 , -2.62374854])>>> a<35array([ True, True, False, False], dtype=bool)

  

与许多矩阵语言不同,乘法运算符*的运算在NumPy数组中是元素级别的。可以使用dot函数或方法执行矩阵乘积:

>>> A = np.array( [[1,1],...             [0,1]] )>>> B = np.array( [[2,0],...             [3,4]] )>>> A*B                         # elementwise productarray([[2, 0],       [0, 4]])>>> A.dot(B)                    # matrix productarray([[5, 4],       [3, 4]])>>> np.dot(A, B)                # another matrix productarray([[5, 4],       [3, 4]])

  

 

转载于:https://www.cnblogs.com/lidongsheng/p/8198087.html

你可能感兴趣的文章
多路复用
查看>>
处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“Manag
查看>>
利用SignalR来同步更新Winfrom
查看>>
反射机制
查看>>
CocoaPod
查看>>
BZOJ 1251: 序列终结者 [splay]
查看>>
【UVA】434-Matty&#39;s Blocks
查看>>
hadoop2.2.0+hive-0.10.0完全分布式安装方法
查看>>
使用Reporting Services时遇到的小问题
查看>>
约瑟夫问题
查看>>
Arduino 报错总结
查看>>
树莓派Android Things物联网开发:树莓派GPIO引脚图
查看>>
矩阵快速幂---BestCoder Round#8 1002
查看>>
Hadoop HBase概念学习系列之HBase里的宽表设计概念(表设计)(二十七)
查看>>
Kettle学习系列之Kettle能做什么?(三)
查看>>
Day03:Selenium,BeautifulSoup4
查看>>
awk变量
查看>>
mysql_对于DQL 的简单举例
查看>>
35. Search Insert Position(C++)
查看>>
[毕业生的商业软件开发之路]C#异常处理
查看>>