Numpy 常见 api

Numpy

  • np.array 和 np.asarray 示例
    array 和 asarray 都可以将结构数据转化为ndarray,但是主要区别就是当数据源是
    ndarray 时,array仍然会copy出一个副本,占用新的内存,但asarray不会。

  • np.square(x)

    x 的平方
  • np.random.randn(d0, d1, …, dn)是从标准正态分布中返回一个或多个样本值。
  • np.random.normal


a = np.random.normal(0, 1, (5,))
print(a)
# [ 0.42299678 -0.43882681 -0.50141346 -1.65870284 -1.0075773 ]
a = np.random.normal(0, 1, (2,2))
print(a)
#[[-0.50873443  0.78148842]
# [-0.65438103  0.04117247]]
  • np.random.rand(d0, d1, …, dn)的随机样本位于[0, 1)中。
  • np.arange
  • range

    **注意: ** 这个函数和上一个的不同,在于一个在numpy包里,一个没在。
  • np.dot

    dot()函数是矩阵乘,而*则表示逐个元素相乘
    特别注意,当输入都为一维时,为矩阵相乘,返回一个数值
  • np.concatenate
  • np.std
    计算矩阵标准差

a = np.array([[1, 2], [3, 4]])
print(np.std(a))  # 计算全局标准差
print(np.std(a, axis = 0))  # axis=0计算每一列的标准差  
print(np.std(a, axis = 1))  # axis=1计算每一行的标准差  
  • np.tile
    对整个数组进行复制拼接
    用法:numpy.tile(a, reps)
    其中a为数组,reps为重复的次数
print(np.tile([0, 0], 5))    #在列方向上重复[0,0]5次,默认行1次  
print(np.tile([0,0],(1,1)))  #在列方向上重复[0,0]1次,行1次  
print(np.tile([0,0],(2,1)))  #在列方向上重复[0,0]1次,行2次  
print(np.tile([0,0],(3,1)))  #在列方向上重复[0,0]1次,行3次  
print(np.tile([0,0],(1,3)))  #在列方向上重复[0,0]3次,行1次 
print(np.tile([0,0],(2,3)))  #在列方向上重复[0,0]3次,行2次
  • sum 有两种情况
    • 1,python 中自己的sum
    • 2,numpy中的sum
print(sum([1, 2, 3, 4]))      # 10
a = np.array([[1, 2], [3, 4]])
print(sum(a))                 # [4 6] 默认列相加
print(a.sum(axis = 0))        # 列相加 [4 6]
print(a.sum(axis = 1))        # 行相加 [3 7]

  • 2,numpy中的sum
a = np.array([[1, 2], [3, 4]])
print(np.sum(a))        # 没有axis参数表示全部相加
print(np.sum(a, 0))     # axis=0表示按上下的方向相加
print(np.sum(a, 1))     # axis=1表示按左右的方向相加
print(np.sum(a) / a.shape[0])
  • np.mean
a = np.array([[1, 2], [3, 4]])
print(np.mean(a))     # 对所有元素求均值 -> 2.5
print(np.mean(a, 0))  # 压缩行,对各列求均值  -> [2. 3.]
print(np.mean(a, 1))  # 压缩列,对各行求均值  -> [1.5 3.5]
  • np.exp
print(np.exp(0))   # 1.0
print(np.exp(1))   # 2.71828182846
print(np.exp(2))   # 7.38905609893
  • np.clip
    np.clip(a, a_min, a_max, out=None)
    其中a是一个数组,后面两个参数分别表示最小和最大值,怎么用呢,看代码:
x=np.array([1,2,3,5,6,7,8,9])
print(np.clip(x,3,8))   # [3 3 3 5 6 7 8 8]

也就是说clip这个函数将将数组中的元素限制在a_min, a_max之间,大于a_max的就使得它等于 a_max,小于a_min,的就使得它等于a_min。

# 高维数组也是一样的
x=np.array([[1,2,3,5,6,7,8,9],[1,2,3,5,6,7,8,9]])
print(np.clip(x,3,8))

[[3 3 3 5 6 7 8 8]
 [3 3 3 5 6 7 8 8]]
  • np.log
print(np.log10(100))  # 以 10 为底 -> 2.0 
print(np.log(np.e))   # 以 e 为底  -> 1.0
print(np.log2(1024))  # 以 2 为底  -> 10.0
  • np.squeeze
    (3,) 与 (3,1) 的区别 ?
    通过 np.squeeze 可以把 (3,1) 转化为 (3,)
    这两者是有很大差别的,需要认真对待,详细看代码吧
a = np.array([1, 2, 3])
print(a.shape) # (3,)
print(a * a)   # [1 4 9]
print(a.shape) # (3,)
a = np.array([[1], [2], [3]])
print(a.shape)    # (3, 1)
print(a * a)  
# [[1]
#  [4]
#  [9]]
b = a.squeeze()
print(b)       # [1 2 3]
print(b * b)   # [1 4 9]
print(b.shape) # (3,)

综合一下,看代码

a = np.array([[1], [2], [3]])
b = np.array([1, 2, 3])
print(a.shape)  # (3, 1)
print(b.shape)  # (3,)
print(a - b)
# [[ 0 -1 -2]
#  [ 1  0 -1]
#  [ 2  1  0]]

print(b - a)
# [[ 0  1  2]
#  [-1  0  1]
#  [-2 -1  0]]

print(np.squeeze(a) - b)
#  [0 0 0]
  • np.transpose 矩阵转置
a = np.array([[1, 2], [3, 4]])
print(a)
# [[1 2]
#  [3 4]]
print(np.transpose(a))
# [[1 3]
#  [2 4]]
  • np.save & np.load

    用于保存数据,例如用回归算法求出权重,可以先 save 到本地,等运行测试集的时候再 load 使用

math

math中的方法不能直接访问,需要导入 math 模块,通过静态对象调用相应方法。

import math
  • floor 返回数字的下舍整数。
print("math.floor(-45.17) : ", math.floor(-45.17))  # -> -46
print("math.floor(100.12) : ", math.floor(100.12))  # -> 100
print("math.floor(100.72) : ", math.floor(100.72))  # -> 100
print("math.floor(math.pi) : ", math.floor(math.pi)) # -> 3
  • log 返回 x 的自然对数。
    math.log(x, base) ,,base -- 可选,底数,默认为 e。
    返回 x 的自然对数,x>0
    注意与 numpy 中的 log对比!
print("math.log(np.exp(1) ** 5) : ", math.log(np.exp(1) ** 5))  # 5.0

# 前为x, 后为底数
print("math.log(100,10) : ", math.log(100,10)) # 2.0
print("math.log(27,3) : ", math.log(27,3))     # 3.0
print("math.log(1024,2) : ", math.log(1024,2)) # 10.0

time

  • time.time() 用于测量程序执行时间

其他

  • str 将数字转化为字符串
  • int 取整函数

print(int(10.3))  # 10
print(int(10.9))  # 10
  • argsort 输出由小到大的索引
a = np.array([8, 0, 3, -1, 5])
print(a.argsort())  # [3 1 2 4 0]
b = a.argsort()
print(a[b])         # [-1  0  3  5  8]
  • input 从控制台输入数据
a = input('Enter number: ')
print(a)
print(type(a))


  • split 用于分隔字符串
    split(str="") str 为分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等分隔
str = "abc \ndef \ngh";
print (str.split( ));  # ['abc', 'def', 'gh']

str = "abc \nd ef \ng\nh";
print (str.split( )); # ['abc', 'd', 'ef', 'g', 'h']

str = "abc-twe-ter";
print (str.split('-')); # ['abc', 'twe', 'ter']
  • append & extend
a = [1, 2, 3]
b = [4, 5, 6]
a.append(b)
print(a)  # [1, 2, 3, [4, 5, 6]]
a = [1, 2, 3]
b = [4, 5, 6]
a.extend(b)
print(a)  # [1, 2, 3, 4, 5, 6]

你可能感兴趣的:(Numpy 常见 api)