NumPy 数组类型介绍

11 篇文章 0 订阅

原文地址:http://blog.csdn.net/lsjseu/article/details/20359201

在原文基础上适当精简并更正少量原作者的笔误:

1. NumPy的主要对象是同种元素的多维数组。这是一个所有的元素都是一种类型、通过一个正整数元组索引的元素表格(通常是元素是数字)。

NumPy的数组类被称为ndarray。通常被称作数组。注意numpy.array和标准Python库类array.array并不相同,后者只处理一维数组和提供少量功能。更多重要ndarray对象属性有:

>>> from numpy  import *
>>> a =arange(15).reshape(3, 5)
>>> a
array([[ 0,  1, 2,  3,  4],
       [ 5, 6,  7,  8,  9],
       [10, 11, 12, 13, 14]])
>>> a.shape # 数组的维度
(3, 5)
>>> a.ndim # 数组维度元组中元素的个数 几维的意思
2
>>> a.dtype.name
'int32'
>>> a.itemsize # 数组中每个元素的字节大小
4
>>> a.size # 数组中元素总数
15
>>> type(a)
numpy.ndarray
>>> b = array([6,7, 8])
>>> b
array([6, 7, 8])
>>> type(b)
numpy.ndarray

2. 创建数组:

a)  可以使用 array 函数从常规的Python列表和元组创造数组。所创建的数组类型由原序列中的元素类型推导而来:

>>> from numpy  import *
>>> a = array([2,3,4] )
>>> a
array([2, 3, 4])
>>> a.dtype
dtype('int32')
>>> b = array([1.2,3.5, 5.1])
>>> b.dtype
dtype('float64') 

一个常见的错误包括用多个数值参数调用array而不是提供一个由数值组成的列表作为一个参数

>>> a =array(1,2,3,4)    # WRONG
>>> a = array([1,2,3,4])  # RIGHT

b)  数组将序列包含序列转化成二维的数组,序列包含序列包含序列转化成三维数组等等:

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

c)  数组类型可以在创建时显示指定:

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

d)  通常,数组的元素开始都是未知的,但是它的大小已知。因此,NumPy提供了一些使用占位符创建数组的函数。这最小化了扩展数组的需要和高昂的运算代价。

>>> zeros( (3,4) )
array([[0.,  0., 0.,  0.],
       [0., 0.,  0.,  0.],
       [0., 0.,  0.,  0.]])
>>> ones((2,3,4), dtype=int16 )                
# dtype can also bespecified
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]]], dtype=int16)
>>> empty( (2,3) )
array([[  3.73603959e-262,   6.02658058e-154,   6.55490914e-260],
       [ 5.30498948e-313,  3.14673309e-307,  1.00000000e+000]])

e)  函数zeros创建一个全是0的数组,函数 ones 创建一个全1的数组,函数 empty创建一个内容随机并且依赖与内存状态的数组。默认创建的数组类型(dtype)都是float64。

f)  为了创建一个数列,NumPy提供一个类似arange的函数返回数组而不是列表:

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

g)  当 arange 使用浮点数参数时,由于有限的浮点数精度,通常无法预测获得的元素个数。因此,最好使用函数linspace去接收我们想要的元素个数来代替用range来指定步长。

h)  数组操作更多实例

i)  打印数组:

当你打印一个数组,NumPy以类似嵌套列表的形式显示它,但是呈以下布局:

>>> a = arange(6)                        
# 1d array
>>>print a
[0 1 2 3 4 5]
>>> b =arange(12).reshape(4,3)          
# 2d array
>>>print b
[[ 0  1  2]
   [3  4 5]
   [6  7 8]
   [ 9 1011]]
>>> c =arange(24).reshape(2,3,4)        
# 3d array
>>>print c
[[[ 0  1 2  3]
  [4  5 6  7]
  [8  9 10 11]]
 
   [[12 1314 15]
  [16 1718 19]
  [20 2122 23]]]

一维数组被打印成行,二维数组成矩阵,三维数组成矩阵列表。

强制打印整个数组,你可以设置printoptions参数来更改打印选项。

>>>set_printoptions(threshold='nan')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值