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