Python--numpy库基本用法整理

文章目录

    • numpy库基本功能介绍
    • 生成对象数组
      • 生成对象数组
      • 创建对象的属性
      • 数组对象的基本操作
    • 生成随机数
    • 数组对象索引
    • 数组形态变化
    • 矩阵的构造与操作

numpy库基本功能介绍

numpy主要是用来进行矩阵之间的各种运算,包括算术运算,逻辑运算,特殊运算,还能完成一些文件的二进制保存。
本篇主要整理的是numpy库使用的以下几个方面(跳转方式见目录CSDN的markdown貌似不支持页面内跳转):

  • 生成对象数组
  • 生成随机数
  • 数组对象索引
  • 数组形态变化
  • 矩阵的构造与操作
  • numpy库对文件的操作

生成对象数组

生成对象数组

numpy库创建对象使用的是numpy.ndarray对象,他就是一个矩阵对象,他的生成方法如下:

#生成方法1,笨方法生成对象数组
#注意:array的参数必须是列表,或者元组列表。
import numpy as np
arr1 = np.array([2,3,4])
print(arr1)

>>>arr1
>>>[2,3,4]

#稍微灵活的方法
arr2 = np.arange(15)
print(arr2)
>>>arr2
>>>[0,1,2,3,4,5,……,14]

arr3 = np.arange(0,1,0.1)
print(arr3)
>>>[0.  0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]
#创建零矩阵
>>> np.zeros((3,4))
array([[0., 0., 0., 0.],
       [0., 0., 0., 0.],
       [0., 0., 0., 0.]])
>>> np.ones( (2,3,4), dtype=np.int16 )  # dtype can also be specified
array([[[1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1]],

       [[1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1]]], dtype=int16)
#一般通过上述方法对矩阵初始化,再赋值

还有一种很奇特的赋值

import numpy as np
print(np.empty((2,3)))

>>>[[9.36396080e-312 9.36379870e-312 9.36379870e-312]
 [9.36379871e-312 9.36379867e-312 9.36379871e-312]]
 #显示的是根据内存显示的,没啥用感觉,可能我太菜了没遇到过。

创建数组的时候,还可以完成一些特别的操作,比如等比数列等差数列

创建对象的属性

ndarray生成的数组对象依然包含一些属性,以便有利于查看数组对象的特点。

import numpy as np
array1 = np.arange(12).reshape(3,4)
print(array1)	#数组
print(array1.ndim) #维度
print(array1.itemsize) #一个元素占几个位
print(array1.data) #内存地址编号
print(array1.shape) #形状结构
print(array1.size) #元素个数
print(array1.dtype) #数值类型

>>>[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
	2
	4
	<memory at 0x0000026265F525F0>
	(3, 4)
	12
	int32

数组对象的基本操作

数组对象可以满足:
+、-、*、/、**(幂运算)、dot(@)

生成随机数

numpy可以按照所需的分部情况申请不同的随机数组。
随机数组的生成是基于random模块

from numpy import random
arr1 =random.randn(row,column) #生成标准正态分布 σ=1 u=0  

[[-1.27773514 -0.64800065 -1.53237187  1.23178677  0.46274964]
 [ 0.94273313 -1.43573677 -0.61056291 -0.89413944 -1.30223197]
 [ 0.48155204 -0.96583269  0.28476302  0.62204877 -0.77058676]
 [-0.86928765 -0.03911578  1.09210008 -0.16025725  0.20880903]
 [-2.41615486  1.3443215  -1.63806445  0.36752542 -0.91739408]
 [-0.4214782  -1.53110889 -1.63196816 -0.0112509  -0.80217148]
 [ 0.84017612  1.34483477 -0.45360063  0.79547487  0.28014444]
 [ 0.57294325 -0.26741719 -0.20131149  0.549609    1.34003688]
 [-1.03347317 -1.0817164   1.19568241  0.55382144  0.76639636]
 [-0.33219886 -0.30790467 -0.66799169  1.37820629 -0.38426657]]

arr2 = random.rand(row,column) #(0,1)之间均匀分布的随机数

[[0.60641143 0.54859725 0.16685704 0.86359462 0.04578612]
 [0.78396868 0.03752115 0.95196016 0.97101024 0.58035176]
 [0.43143237 0.39400943 0.60224595 0.28207401 0.8089576 ]
 [0.9058164  0.51338237 0.17116062 0.92857854 0.74074622]
 [0.15271184 0.8250935  0.37772417 0.52828606 0.9729476 ]
 [0.00516695 0.36318266 0.51620215 0.50015956 0.58114539]
 [0.90791835 0.25354604 0.01899828 0.96665876 0.48842562]
 [0.54065148 0.5864904  0.98873666 0.93561511 0.70190484]
 [0.06578382 0.9164756  0.87364305 0.48107961 0.45400029]
 [0.88552883 0.87294524 0.5889672  0.9471509  0.34863095]]

arr3 = random.randint(low,[high],size=[,])#生成有上下界的整数,依旧不好含high值

[[4 8 3 3 6 2 5 9 4 2]
 [2 9 6 7 5 7 3 3 8 4]
 [3 4 5 6 4 6 2 8 5 9]
 [5 7 5 5 8 7 7 4 3 3]
 [6 4 3 7 4 6 6 8 2 6]
 [5 2 2 4 4 2 3 3 4 8]
 [4 5 2 5 3 6 7 9 8 7]
 [9 9 2 2 4 8 7 3 8 4]
 [4 4 3 5 6 8 2 8 5 2]
 [6 3 7 9 8 9 2 2 9 8]]

还有好多好多,基于二项分布的,基于数列打散的
具体参考这个文档 随机数生成文档、

数组对象索引

后面的功能直接上文档,写不完了太多了hhhhhh
索引文档

数组形态变化

矩阵与矩阵变化
这个要注意一些基本的T、H方法

矩阵的构造与操作

相关运算就是,比如sum、……Quickstart tutorial

你可能感兴趣的:(神经网络与深度学习)