numpy

数组的创建

  • 使用array函数从常规Python列表或元组中创建数组:
a = np.array([2,3,4])
  • 原生数组的创建:
    • zeros(shape)将创建一个用指定形状用0填充的数组。默认的dtype是float64:
    np.zeros((2, 3)) 
    array([[ 0., 0., 0.], [ 0., 0., 0.]])	
    
    • ones(shape)将创建一个用1个值填充的数组。它在所有其他方面与zeros相同。
    • arange()将创建具有有规律递增值的数组:
    np.arange(2, 10, dtype=np.float)#(dtype:数据类型)
    array([ 2., 3., 4., 5., 6., 7., 8., 9.])
    np.arange(2, 3, 0.1)
    array([ 2. , 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9])
    
    • linspace()将创建具有指定数量元素的数组,并在指定的开始值和结束值之间平均间隔:
    np.linspace(1., 4., 6)
    array([ 1. ,  1.6,  2.2,  2.8,  3.4,  4. ])
    
  • 基础知识
    • 乘法运算符 * 的运算在NumPy数组中是元素级别的。矩阵乘积可以使用 dot 函数或方法执行:
      A = np.array( [[1,1],
      		[0,1]] )
      B = np.array( [[2,0],
           	[3,4]] )
      A*B                         
      array([[2, 0],
      	[0, 4]])
      A.dot(B)                    
      array([[5, 4],
      	[3, 4]])
      np.dot(A, B)                
      array([[5, 4],
       	[3, 4]])
      
    • 迭代(Iterating) 多维数组是相对于第一个轴完成的:
      for row in b:
       print(row)
       [0 1 2 3]
       ......
       [40 41 42 43]
      
  • 对数组中的每个元素执行操作,可以使用 flat 属性:
    	for element in b.flat:	
    	print(element)
    	0
    	1
    	...
    	43
    

形状操作

  • 属性

    • 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 类型的数组的 itemsize 为4(=32/8)。它等于 ndarray.dtype.itemsize 。
    • ndarray.data:该缓冲区包含数组的实际元素。通常,我们不需要使用此属性,因为我们将使用索引访问数组中的元素。
  • 更改数组形状

    • 返回一个修改后的数组,但不更改原始数组:a.ravel(),a.reshape(6,2) ,a.T(矩阵的转置)
    • 修改数组本身:ndarray.resize
  • 数组的拼接

a = np.floor(10*np.random.random((2,2)))   #随机创建数组
b = np.floor(10*np.random.random((2,2)))
array([[ 8.,  8.],
       [ 0.,  0.]])    #a
array([[ 1.,  8.],
       [ 0.,  4.]])    #b

垂直拼接:

np.vstack((a,b))
array([[ 8.,  8.],
       [ 0.,  0.],
       [ 1.,  8.],
       [ 0.,  4.]])

水平拼接:

np.hstack((a,b))
array([[ 8.,  8.,  1.,  8.],
       [ 0.,  0.,  0.,  4.]])

线性代数之简单数组操作

a = np.array([[1.0, 2.0], [3.0, 4.0]])
print(a)
[[ 1.  2.]
 [ 3.  4.]]

a.transpose()
array([[ 1.,  3.],
       [ 2.,  4.]])

np.linalg.inv(a)
array([[-2. ,  1. ],
       [ 1.5, -0.5]])

u = np.eye(2) # unit 2x2 matrix; "eye" represents "I"
u
array([[ 1.,  0.],
       [ 0.,  1.]])
j = np.array([[0.0, -1.0], [1.0, 0.0]])

np.dot (j, j) # matrix product
array([[-1.,  0.],
       [ 0., -1.]])

np.trace(u)  # trace
2.0

y = np.array([[5.], [7.]])
np.linalg.solve(a, y)
array([[-3.],
       [ 4.]])

np.linalg.eig(j)
(array([ 0.+1.j,  0.-1.j]), array([[ 0.70710678+0.j        ,  0.70710678-0.j        ],
       [ 0.00000000-0.70710678j,  0.00000000+0.70710678j]])) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值