python Numpy基础

1. 基础
Numpy的主要对象是齐次多维数组, 在Numpy中dimensions(维度)称为axes(轴), axis的复数

  • array.ndim
    数组的轴数(维度,秩)。

  • array.shape
    数组的尺寸。这是一个整数元组,指示每个维度中数组的大小。对于具有n行和m列的矩阵,shape将为(n,m)。因此这个整数元组的长度 为轴数ndim。

  • array.size
    数组元素的总数,等于shape里元素的的乘积。

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

#3D空间中的点的坐标[1, 2, 1]只有一个轴。该轴上有3个元素,所以我们说它的长度为3
>>> np.array([1, 0, 0]).ndim
1
>>> np.array([1, 0, 0]).ndim == len(np.array([1, 0, 0]).shape)
True

#下面这个数组有2个轴。第一轴的长度为2,第二轴的长度为3
>>> np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]).ndim
2

#根据序列中元素的类型推导所得数组的类型
np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]).dtype
dtype('int64')

#根据序列中元素的类型推导所得数组的类型
>>> np.array([1.2, 3.5, 5.1]).dtype
dtype('float64')

#数组的类型也可以在创建时明确指定:
>>> np.array([[1,2], [3,4]], dtype=complex)
array([[1.+0.j, 2.+0.j],
       [3.+0.j, 4.+0.j]])

>>> type(np.array([1.2, 3.5, 5.1]))
<class 'numpy.ndarray'> #ndarray

2. array 的创建

  • 给array传入python自带的list或tupple进去,会自动生成对应维度的array数据结构。传入object可以是全列表结构也可以是列表加元组,好像比较随意,但给array传入的obeject必须是一个整体。
>>> a = [1, 2, 3, 4]
>>> b = (1, 2, 3, 4)
>>> np.array(a)
array([1, 2, 3, 4])

>>> np.array(b)
array([1, 2, 3, 4])

>>> np.array([1, 2, 3, 4], [5, 6, 7, 8])
array([[1, 2, 3, 4],
       [5, 6, 7, 8]])
       
>>> np.array([(1, 2), (3, 4)])
array([[1, 2],
       [3, 4]])
       
>>> np.array([(1, 2), [3, 4]])
array([[1, 2],
       [3, 4]])
       
>>> np.array(((1, 2), [3, 4]))
array([[1, 2],
       [3, 4]])
       
>>> np.array(1, 2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: data type not understood

  • 为了创建数字序列,NumPy提供了类似于range返回数组而不是列表的函数 。
>>> np.arange(10, 30, 5)
array([10, 15, 20, 25])

>>> np.arange(20)
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19])
 
#reshape后面两个数字乘积必须等于20      
>>> np.arange(20).reshape(4, 5)
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])
  • 通常,数组的元素最初是未知的,但是其大小是已知的。因此,NumPy提供了几个函数来创建具有初始占位符内容的数组
#zeros创建一个全0结构,ones和zeros使用方法一样
>>> np.zeros((2, 3))
array([[0., 0., 0.],
       [0., 0., 0.]])
       
#有3个2行3列的数据       
>>> np.zeros((3, 2, 3))
array([[[0., 0., 0.],
        [0., 0., 0.]],

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

       [[0., 0., 0.],
        [0., 0., 0.]]])

#empty并不是空的意思,而是说,在传数据进来之前,去创建一个数据结构先占住位置
#其初始内容是随机的,并取决于内存的状态,默认情况下,创建的数组的dtype为 float64
>>> np.empty((2, 2))
array([[4.9e-324, 9.9e-324],
       [1.5e-323, 2.0e-323]])

#在0到2之间生成9个数字,包含2,arang不包含
>>> np.linspace(0, 2, 9)
array([0.  , 0.25, 0.5 , 0.75, 1.  , 1.25, 1.5 , 1.75, 2.  ])

3. 打印array

  • 最后一个轴从左到右打印

  • 倒数第二个从上到下打印

  • 其余的也从上到下打印,每个切片之间用空行隔开。

  • 然后将一维数组打印为行,将二维打印为矩阵,将三维打印为矩阵列表。

>>> print(np.arange(6))
[0 1 2 3 4 5]
>>> print(np.arange(12).reshape(3,4))
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
>>> print(np.arange(24).reshape(2,3,4))
[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值