【python深度学习】 np.xxx函数总结

本文所包括的numpy库中的函数主要应用于深度学习领域所涉及到的,会持续更新.python版本3.7

1.np.meshgrid( )

X, Y = np.meshgrid(x, y) 代表的是将x中每一个数据和y中每一个数据组合生成很多点,然后将这些点的x坐标放入到X中,y坐标放入Y中,并且相应位置是对应的
代码:

import numpy
import numpy as np

x = [1,2,3,4,5,6]

y = [7,8,9]

X,Y = np.meshgrid(x,y)

print(X)
print("------")
print(Y)

输出:

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

2.np.nansum() || np.nanmean()

nan代表一个“不是数字”的值,如果有这种值就会报错,用nansum会在求和,取均值的时候忽略nan(取均值:mean)

w = [1,2,4,5,np.nan]
W = np.sum(w)

print(W)
nan

Process finished with exit code 0
w = [1,2,4,5,np.nan]
W = np.nansum(w)

print(W)
12.0

Process finished with exit code 0

np.nanmean() 同理,mean是取均值的函数

3.np.arange(x,y,h)

函数返回一个有终点和起点的固定步长的排列。
(1)只有一个参数时候:参数为终点,起点默认为0,步长默认为1;

x = np.arange(5)

print(x)
[0 1 2 3 4]

Process finished with exit code 0

(2)有两个参数的时候,参数为起点和终点,步长默认为1

x = np.arange(1,5)

print(x)
[1 2 3 4]

Process finished with exit code 0

如果起点值大于终点,返回空数组
(3)三个参数为起点终点步长按顺序排列

x = np.arange(1,10,2)

print(x)
[1 3 5 7 9]

Process finished with exit code 0

4.np.c_() || np.r_()

c_ : 中的c是column(列)的缩写,就是按列叠加两个矩阵,把两个矩阵左右组合,要求行数相等,
同理,np.r_是row(列)按行连接两个矩阵,就是把两矩阵上下相加,要求列数相等

x = np.array([1,2,3,4,5,6]).reshape(3,2)
y = np.array([7,8,9,4,5,6,1,2,3]).reshape(3,3)

t = np.c_[x,y]
print(x)
print(y)
print(t)
[[1 2]
 [3 4]
 [5 6]]
[[7 8 9]
 [4 5 6]
 [1 2 3]]
[[1 2 7 8 9]
 [3 4 4 5 6]
 [5 6 1 2 3]]

Process finished with exit code 0

5.np.dot()

函数主要有两个功能,向量点积和矩阵乘法
(1)向量和向量之间是点积
(2)矩阵和向量之间,向量会自动转化为矩阵进行矩阵乘法
(3)矩阵和矩阵之间是矩阵乘法计算

x = np.array([1,2,3,4,5,6])
y = np.array([6,7,8,9,10,1])
z = x.reshape(3,2)
m = np.array([1,2])#z,m 的列数要确保相同
n = y.reshape(2,3)

a = np.dot(x,y)
b = np.dot(z,m)
c = np.dot(z,n)
print(x)
print(y)
print("-----------")
print(z)
print("-----------")
print(a)
print("-----------")
print(b)
print("-----------")
print(c)
[1 2 3 4 5 6]
[ 6  7  8  9 10  1]
-----------
[[1 2]
 [3 4]
 [5 6]]
-----------
136
-----------
[ 5 11 17]
-----------
[[24 27 10]
 [54 61 28]
 [84 95 46]]

Process finished with exit code 0

6.np.multiply()

由于multiply是ufunc函数,ufunc函数会对这两个数组的对应元素进行计算,因此它要求这两个数组有相同的大小(shape相同),相同则是计算内积。如果shape不同的话,会将小规格的矩阵延展成与另一矩阵一样大小,再求两者内积。

x = np.array([1,2,3,4,5,6]).reshape(3,2)
y = np.array([6,7,8,9,10,1]).reshape(3,2)

a = np.multiply(x,y)
print(x)
print("-----------")
print(y)
print("-----------")
print(a)

[[1 2]
 [3 4]
 [5 6]]
-----------
[[ 6  7]
 [ 8  9]
 [10  1]]
-----------
[[ 6 14]
 [24 36]
 [50  6]]

Process finished with exit code 0

当矩阵维度不一致的时候:

x = np.array([1,2,3,4,5,6]).reshape(3,2)
z = np.array([1,2,3]).reshape(3,1)
b = np.multiply(x,z)
print(b)
[[1 2]
 [3 4]
 [5 6]]
-----------
[[1]
 [2]
 [3]]
-----------
[[ 1  2]
 [ 6  8]
 [15 18]]

7.np.linalg.norm()

np.linalg.norm()用于求范数,linalg本意为linear(线性) + algebra(代数),norm则表示范数。
用法:

np.linalg.norm(x, ord=None, axis=None, keepdims=False)

1.x: 表示矩阵(一维数据也是可以的~)
2.ord: 表示范数类型
ord=1:表示求列和的最大值
ord=2:|λE-ATA|=0,求特征值,然后求最大特征值得算术平方根
ord=∞:表示求行和的最大值
ord=None:表示求整体的矩阵元素平方和,再开根号
3.axis:
axis = 1:按行向量进行处理
axis = 0:按列向量进行处理
axis = None:表示整个矩阵的范数
4.keepdims:表示是否保持矩阵的二位特性,True表示保持,False表示不保持,默认为False

8.np.power()

该函数是用于数组函数求n次方,

a = np.power(2,3)
print(a)
8

Process finished with exit code 0
b = np.random.randn(3,3)
a = np.power(b,2)
print(b)
print("-------")
print(a)
[[-0.48641285 -0.28778445  0.54128437]
 [-0.38554216  1.8861078   1.03012565]
 [ 0.13224982  0.62738545  0.85826017]]
-------
[[0.23659746 0.08281989 0.29298877]
 [0.14864276 3.55740264 1.06115885]
 [0.01749002 0.39361251 0.73661052]]

Process finished with exit code 0

9.np.linspace()

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)
该函数主要是用来创建等差数列的:

Return evenly spaced numbers over a specified interval.
(在start和stop之间返回均匀间隔的数据)

Returns num evenly spaced samples, calculated over the interval [start, stop].
(返回的是 [start, stop]之间的均匀分布)

The endpoint of the interval can optionally be excluded.
Changed in version 1.16.0: Non-scalar start and stop are now supported.
(可以选择是否排除间隔的终点)

每个参数的含义:
start:返回样本数据开始点
stop:返回样本数据结束点
num:生成的样本数据量,默认为50
endpoint:True则包含stop;False则不包含stop
retstep:If True, return (samples, step), where step is the spacing between samples.(即如果为True则结果会给出数据间隔)
dtype:输出数组类型
axis:0(默认)或-1

import numpy as np
x = np.linspace(-3*np.pi,3*np.pi,100)
print(x)
[-9.42477796 -9.23437841 -9.04397885 -8.8535793  -8.66317974 -8.47278019
 -8.28238063 -8.09198108 -7.90158152 -7.71118197 -7.52078241 -7.33038286
 -7.1399833  -6.94958375 -6.75918419 -6.56878464 -6.37838508 -6.18798553
 -5.99758598 -5.80718642 -5.61678687 -5.42638731 -5.23598776 -5.0455882
 -4.85518865 -4.66478909 -4.47438954 -4.28398998 -4.09359043 -3.90319087
 -3.71279132 -3.52239176 -3.33199221 -3.14159265 -2.9511931  -2.76079354
 -2.57039399 -2.37999443 -2.18959488 -1.99919533 -1.80879577 -1.61839622
 -1.42799666 -1.23759711 -1.04719755 -0.856798   -0.66639844 -0.47599889
 -0.28559933 -0.09519978  0.09519978  0.28559933  0.47599889  0.66639844
  0.856798    1.04719755  1.23759711  1.42799666  1.61839622  1.80879577
  1.99919533  2.18959488  2.37999443  2.57039399  2.76079354  2.9511931
  3.14159265  3.33199221  3.52239176  3.71279132  3.90319087  4.09359043
  4.28398998  4.47438954  4.66478909  4.85518865  5.0455882   5.23598776
  5.42638731  5.61678687  5.80718642  5.99758598  6.18798553  6.37838508
  6.56878464  6.75918419  6.94958375  7.1399833   7.33038286  7.52078241
  7.71118197  7.90158152  8.09198108  8.28238063  8.47278019  8.66317974
  8.8535793   9.04397885  9.23437841  9.42477796]

10.np.hstack() || np.vstack()

hstack()函数是用于两数组的水平方向合并,合并后行数不变;而vstack()函数,是用于两数组的垂直方向的合并,合并后列数不变,即horizontal和vertical.

a = np.array([1,2,3,4,5,6,7,8,9]).reshape(3,3)
b = np.ones([3,1])
print(a,'\n',b)
c = np.hstack((a,b))
print(c)
C:\Users\admin\anaconda3\envs\torch11\python.exe D:/Code/d2l-zh-pytorch/test.py
[[1 2 3]
 [4 5 6]
 [7 8 9]] 
 [[1.]
 [1.]
 [1.]]
[[1. 2. 3. 1.]
 [4. 5. 6. 1.]
 [7. 8. 9. 1.]]

Process finished with exit code 0

11.np.linalg.inv()

这是一个求矩阵的逆矩阵的函数,要求矩阵本身是可逆的!

e = np.array([2,3,1,0,1,3,1,2,5]).reshape(3,3)
f = np.linalg.inv(e)
print(f)
[[-0.16666667 -2.16666667  1.33333333]
 [ 0.5         1.5        -1.        ]
 [-0.16666667 -0.16666667  0.33333333]]
a = np.array([1,2,3,4,5,6,7,8,9]).reshape(3,3)
b = np.ones([3,1])
print(a,'\n',b)
c = np.hstack((a,b))
print(c)
e = np.array([2,3,1,0,1,3,1,2,5]).reshape(3,3)
f = np.linalg.inv(e)
print(f)
d = np.linalg.inv(a)
C:\Users\admin\anaconda3\envs\torch11\python.exe D:/Code/d2l-zh-pytorch/test.py
Traceback (most recent call last):
  File "D:/Code/d2l-zh-pytorch/test.py", line 52, in <module>
    d = np.linalg.inv(a)
  File "<__array_function__ internals>", line 5, in inv
  File "C:\Users\admin\anaconda3\envs\torch11\lib\site-packages\numpy\linalg\linalg.py", line 545, in inv
    ainv = _umath_linalg.inv(a, signature=signature, extobj=extobj)
  File "C:\Users\admin\anaconda3\envs\torch11\lib\site-packages\numpy\linalg\linalg.py", line 88, in _raise_linalgerror_singular
    raise LinAlgError("Singular matrix")
numpy.linalg.LinAlgError: Singular matrix
[[1 2 3]
 [4 5 6]
 [7 8 9]] 
 [[1.]
 [1.]
 [1.]]
[[1. 2. 3. 1.]
 [4. 5. 6. 1.]
 [7. 8. 9. 1.]]
[[-0.16666667 -2.16666667  1.33333333]
 [ 0.5         1.5        -1.        ]
 [-0.16666667 -0.16666667  0.33333333]]

Process finished with exit code 1

Traceback 报错就是a矩阵不可逆

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: `np.hstack()`是NumPy库中的一个函数,用于沿水平方向将数组堆叠起来。它接受一个元组或列表作为参数,其中每个元素都是NumPy数组。它将这些数组沿着水平方向拼接成一个新的数组。例如: ```python import numpy as np a = np.array([[1, 2], [3, 4]]) b = np.array([[5, 6]]) c = np.hstack((a, b)) print(c) ``` 输出结果为: ``` array([[1, 2, 5, 6], [3, 4, , ]]) ``` 在这个例子中,我们将数组`b`沿着`a`的水平方向拼接起来,形成了一个新的数组`c`。注意,`b`的形状必须与`a`的行数相同,否则会报错。 ### 回答2: np.hstack()是一个NumPy中的函数,用于将两个或多个数组水平(按列)堆叠在一起。水平堆叠意味着将数组按列连接在一起,生成一个新的数组。 使用np.hstack()函数可以将两个具有相同行数的一维或二维数组水平合并。例如,假设有两个一维数组arr1和arr2,可以使用np.hstack()将它们水平堆叠: ``` python import numpy as np arr1 = np.array([1, 2, 3]) arr2 = np.array([4, 5, 6]) result = np.hstack((arr1, arr2)) print(result) ``` 输出结果为:[1 2 3 4 5 6],即将两个一维数组在列方向上合并成一个新的一维数组。 同样,np.hstack()函数也可以用于合并具有相同行数的二维数组。例如,假设有两个二维数组matrix1和matrix2,可以使用np.hstack()将它们水平堆叠: ``` python import numpy as np matrix1 = np.array([[1, 2], [3, 4]]) matrix2 = np.array([[5, 6], [7, 8]]) result = np.hstack((matrix1, matrix2)) print(result) ``` 输出结果为:[[1 2 5 6] [3 4 7 8]],即将两个二维数组在列方向上合并成一个新的二维数组。 需要注意的是,np.hstack()函数要求合并的数组具有相同的行数。如果数组的行数不同,则会引发ValueError异常。 ### 回答3: np.hstack()是NumPy库中的一个函数,用于沿着水平方向将数组序列进行堆叠。 具体而言,np.hstack()函数可以接受一个包含多个数组的元组、列表或者N维数组,并将这些数组按水平方向进行堆叠。也就是说,它将会从左到右将这些数组进行连接。 np.hstack()函数的输入参数是一组数组(可以是一维、二维、甚至多维数组)或者元组(或者列表)形式的这组数组,输出是一个水平方向进行堆叠后的新数组。 需要注意的是,水平堆叠的数组要求它们在除了水平方向之外的维度上具有相同的形状,以确保堆叠操作的有效性。换句话说,只有在数组的行数(或者列数)相等的情况下,它们才能水平堆叠。 下面是一个简单的例子来说明np.hstack()函数的用法: ``` import numpy as np a = np.array([[1, 2], [3, 4]]) b = np.array([[5, 6], [7, 8]]) c = np.hstack((a, b)) print(c) ``` 输出结果为: ``` [[1 2 5 6] [3 4 7 8]] ``` 在这个例子中,我们定义了两个二维数组a和b。使用np.hstack()函数将它们在水平方向进行堆叠得到了一个新的二维数组c。c的第一行是a的第一行和b的第一行的水平堆叠,c的第二行是a的第二行和b的第二行的水平堆叠。 总之,np.hstack()函数是一个非常实用的函数,可以方便地将一组数组按照水平方向进行堆叠,是NumPy库中进行数组操作的重要工具之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值