Pysci,Numpy

first step

首先要学习py的一些有用的开源包,方便编写代码

  • Numpy
    区别于matlab,py更多的使用array数组。
  1. index的的起始位置为0.
  2. 更多的使用refence,而不是copy传参
  3. Numpy中的class matrix是class array的一个子集
  4. Numpy的rank函数,当应用于数组类型时返回的是N 维的数组。但是应用于matrix函数时返回的是N×1的矩阵类型的返回类型。
  5. shape = N×1,1×N,N。代表的是不一样的类型。

slicing

有两种方法来获取数组中的某一列数据:1. 使用整数和slice混合的方法将会得到更小的rank。2. 仅使用slice这种方法会得到跟原来数组一样rank的数组,因为slicing 访问数组会返回比末尾范围小一的数组值。

import numpy as np
a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
row_r1 = a[1, :]  # rank =1, shape = (4,)
row_r2 = a[1:2, :] # rank =2 ,shape = (1, 4)
  • integer indexing
print(a[[0, 1, 2], [0, 1, 0]]) #通过元素来访问数组
print(np.array([a[0, 0], a[1, 1], a[2, 0] ] ) ) # 另外一种方法

trick :小技巧

b= np.array([0, 2, 0, 1])
print(a[np.arange(4), b])# 通过定义数组来访问指定的integer slicing。

通过bool值来筛选数组

a = np.array([ [1, 2 ], [3, 4], [5, 6]])
bool_idx = (a > 2)
print(bool_idx) # 输出由判决式(true,false)构成的数组。
print(a[bool_idx])# 通过判决式构成的数组来indexing 数组
#可以得到满足条件的元素组成的rank =1 的数组
print(a[a > 2])# 简化版

你可能感兴趣的:(Pysci,Numpy)