Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么一维数组的形状不将行数显示为1?_Python_Arrays_Numpy - Fatal编程技术网

Python 为什么一维数组的形状不将行数显示为1?

Python 为什么一维数组的形状不将行数显示为1?,python,arrays,numpy,Python,Arrays,Numpy,我知道numpy数组有一个名为shape的方法,它返回[No.of rows,No.of columns],shape[0]给出行数,shape[1]给出列数 a = numpy.array([[1,2,3,4], [2,3,4,5]]) a.shape >> [2,4] a.shape[0] >> 2 a.shape[1] >> 4 但是,如果我的数组只有一行,那么它将返回[No.of columns,]。形状[1]将不在索引中。比如说 a = numpy

我知道numpy数组有一个名为shape的方法,它返回[No.of rows,No.of columns],shape[0]给出行数,shape[1]给出列数

a = numpy.array([[1,2,3,4], [2,3,4,5]])
a.shape
>> [2,4]
a.shape[0]
>> 2
a.shape[1]
>> 4
但是,如果我的数组只有一行,那么它将返回[No.of columns,]。形状[1]将不在索引中。比如说

a = numpy.array([1,2,3,4])
a.shape
>> [4,]
a.shape[0]
>> 4    //this is the number of column
a.shape[1]
>> Error out of index
现在,如果一个numpy数组可能只有一行,那么如何获得该数组的行数

谢谢

行和列的概念适用于二维阵列。但是,数组
numpy.array([1,2,3,4])
是一个一维数组,因此只有一个维度,因此
shape
正确地返回一个单值iterable

对于同一个数组的2D版本,请考虑以下内容:

>>> a = numpy.array([[1,2,3,4]]) # notice the extra square braces
>>> a.shape
(1, 4)

而不是将其转换为2d数组,这可能不是每次都可以选择的-可以检查shape返回的元组的
len()
,或者只检查索引错误:

import numpy

a = numpy.array([1,2,3,4])
print(a.shape)
# (4,)
print(a.shape[0])
try:
    print(a.shape[1])
except IndexError:
    print("only 1 column")
或者,如果您知道只有1或2维形状,您可以尝试将其分配给一个变量以供以后使用(或返回或您所拥有的内容):

try:
    shape = (a.shape[0], a.shape[1])
except IndexError:
    shape = (1, a.shape[0])

print(shape)

@如果你从一个一维数组开始(
a_1d=numpy.array([1,2,3,4])
),你总是可以将它转换成一个二维数组,例如
a_2d=a_1d[None,:]