据我所知,1-D数组是那些只有1列和任意行数的数组,反之亦然。
如果我运行此代码:
import numpy as np
a = np.arange(10).reshape(1,10)
b = np.arange(10).reshape(10,1)
print(a.ndim, b.ndim)
它返回两者都是二维数组。为什么?我知道电脑工作正常。但是,请你告诉我什么是一维阵列。
一维数组是只有一个维度的数组。没有列或行。它有一些像a=[1,2,3,4,5,6]
这样的行。两个单独维度行和列的概念不适用于1-D阵列。因此,当您使用.reshape(1,10)
定义第一个数组时,您为其指定了维度-1和10.因此,您实际上定义了维度为1x10的二维数组。
如果您执行此代码 -
import numpy as np
a = np.arange(10).reshape(1,10)
b = np.arange(10).reshape(10,1)
print(a.ndim, b.ndim)
print(a)
print(b)
你会得到这个输出 -
2 2
[[0 1 2 3 4 5 6 7 8 9]]
[[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]]
这清楚地表明数组a
有2个维度 - 一行和一列,因此是一个二维数组。
这个.reshape(10,1)
将数组重新整形为具有10行和1列的2维数组。但是,如果使用.reshape(10)
,您将获得一维数组。
问题是reshape
,你说reshape(1,10)
。这意味着,将阵列重新整形为具有1行和10列的2d矩阵。你想要的是1d阵列,所以你需要reshape(10)