自学内容网 自学内容网

numpy库ndarray维度问题

今天在写支持向量机代码时,有一个维度处理错了,导致超平面一直不正确,发现是维度错误。所以写一下numpy中维度相关内容。

shape 是一个元组(tuple),表示数组在每个维度上的大小。它描述了数组的形状,即每个维度有多少个元素。

ndim 是一个整数,表示数组的维度数量。它只告诉你数组有多少个维度,而不关心每个维度的大小。

import numpy as np
a = np.array([1, 2, 3, 4, 5])
print(a.shape, a.ndim)

输出的是:(5, )1

注意:(5, )是一维,而(5, 1)则是二维(或列向量)

import numpy as np
a = np.array([1, 2, 3, 4, 5])
a = a.reshape(-1, 1)
print(a)
print(a.shape, a.ndim)

输出结果:

[[1]
 [2]
 [3]
 [4]
 [5]]
(5, 1) 2

reshape(rows, cols):重塑ndarray的行数和列数(必须保证行数乘列数还是原来大小)。两个位置最多只能有一个-1,表示安装另一个非-1值进行排列,剩下 k k k代替-1值,即:
原来大小 = k × 非 − 1 值 原来大小 = k \times 非-1值 原来大小=k×1

reshape(-1, 1)可以生成列向量

reshape(-1)是转换为一维

import numpy as np
a = np.array([1, 2, 3, 4, 5, 6])
a = a.reshape(2,3)
print(a)
a = a.reshape(-1, 2)
print(a)
a = a.reshape(3, -1)
print(a)

输出结果:

[[1 2 3]
 [4 5 6]]
[[1 2]
 [3 4]
 [5 6]]
[[1 2]
 [3 4]
 [5 6]]

numpy中生成数组的方式中,有形如:x(a)x((a,b)),前者是一维,后者是二维。例如zeros函数:

import numpy as np
a = np.zeros(3)
print(a, a.shape, a.ndim)
b = np.zeros((3,1))
print(b, b.shape, b.ndim)

输出结果:

[0. 0. 0.] (3,) 1
[[0.]
 [0.]
 [0.]] (3, 1) 2

**transpose()**是转置,等价于.T

import numpy as np
a = np.zeros(3)
a = a.reshape(-1, 1)
print(a, a.shape, a.ndim)
b = a.transpose()
print(b, b.shape, b.ndim)
c = a.T
print(c, c.shape, c.ndim)

输出结果:

[[0.]
 [0.]
 [0.]] (3, 1) 2
[[0. 0. 0.]] (1, 3) 2
[[0. 0. 0.]] (1, 3) 2

原文地址:https://blog.csdn.net/qq_63432403/article/details/145291403

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!