Python科学计算学习一 NumPy 快速处理数据

时间:2023-03-09 08:54:14
Python科学计算学习一 NumPy 快速处理数据

1 创建数组

(1) array(boject, dtype=None, copy=True, order=None, subok=False, ndmin=0)

a = array([1, 2, 3, 4])

b = array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])

a.dtype    --> dtype('int32')

a.shape    --> (4,)

b.shape    -->(3, 4)

a.shape=2, -1  #(-1时自动计算,相当于2, 6)

c = a.reshape((2,2))  #c和a公用一个空间

(2) arange([start,] stop [,step], dtype=None) 

a = arange(5)    -->array([0, 1, 2, 3, 4])

a[2:4]    -->array([2,3])

a[:-1]    -->array([0, 1, 2, 3])  #下标为负数,表示从后往前数

a[2:4] = 20, 30    -->array([0, 1, 20, 30, 4])  #可以通过下标修改元素

x = arange(5, 0, -1)    -->array([5, 4, 3, 2, 1])

x[array([True, False, True, False])]

-->array([5, 3])   #只获取布尔数组中True所在的下标 0 2 长度不够算False

x[array([True, False, False, True, False])) = -5, -2  #用布尔数组修改True所在下标的元素

x    -->array([-5, 4, 3, -2, 1])

(3) linspace(start, stop, num=50, endpoint=True, retstep=False) #等差数列的一维数组

logspane(start, stop, num=50, endpoint=True, base=10)         #等比数列的一维数组

(4) frombuffer

  fromfile

  fromstring(string, dtype=float, count=-1, sep=' ')

fromstring('abcdefgh', int8)

-->array([ 97, 98, 99, 100, 101, 102, 103, 104], dtype=int8)  #一个字符占1个字节(Byte)=8位(bit),

fromstring('abcdefgh', in16)

-->array([25185, 25699, 26213, 26727], dtype=int16)  #25185=98*256 + 97

(5) fromfunction(funtion, shape, **kwargs)


def func(i, j):

  return (i+1) * (j+1)

a = fromfunction(func, (9, 9))    -->  生成一个99乘法口诀二维数组 a[i, j] = func(i, j)

上面等价于 arange(1,10).reashape(-1,1) * arange(1,10)