Количество переменных в массиве - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть код;

x = np.linspace(0, 12, 200, False, True, None)

когда я печатаю x, я получаю;

(array([ 0.  ,  0.06,  0.12,  0.18,  0.24,  0.3 ,  0.36,  0.42,  0.48,
        0.54,  0.6 ,  0.66,  0.72,  0.78,  0.84,  0.9 ,  0.96,  1.02,
        1.08,  1.14,  1.2 ,  1.26,  1.32,  1.38,  1.44,  1.5 ,  1.56,
        1.62,  1.68,  1.74,  1.8 ,  1.86,  1.92,  1.98,  2.04,  2.1 ,
        2.16,  2.22,  2.28,  2.34,  2.4 ,  2.46,  2.52,  2.58,  2.64,
        2.7 ,  2.76,  2.82,  2.88,  2.94,  3.  ,  3.06,  3.12,  3.18,
        3.24,  3.3 ,  3.36,  3.42,  3.48,  3.54,  3.6 ,  3.66,  3.72,
        3.78,  3.84,  3.9 ,  3.96,  4.02,  4.08,  4.14,  4.2 ,  4.26,
        4.32,  4.38,  4.44,  4.5 ,  4.56,  4.62,  4.68,  4.74,  4.8 ,
        4.86,  4.92,  4.98,  5.04,  5.1 ,  5.16,  5.22,  5.28,  5.34,
        5.4 ,  5.46,  5.52,  5.58,  5.64,  5.7 ,  5.76,  5.82,  5.88,
        5.94,  6.  ,  6.06,  6.12,  6.18,  6.24,  6.3 ,  6.36,  6.42,
        6.48,  6.54,  6.6 ,  6.66,  6.72,  6.78,  6.84,  6.9 ,  6.96,
        7.02,  7.08,  7.14,  7.2 ,  7.26,  7.32,  7.38,  7.44,  7.5 ,
        7.56,  7.62,  7.68,  7.74,  7.8 ,  7.86,  7.92,  7.98,  8.04,
        8.1 ,  8.16,  8.22,  8.28,  8.34,  8.4 ,  8.46,  8.52,  8.58,
        8.64,  8.7 ,  8.76,  8.82,  8.88,  8.94,  9.  ,  9.06,  9.12,
        9.18,  9.24,  9.3 ,  9.36,  9.42,  9.48,  9.54,  9.6 ,  9.66,
        9.72,  9.78,  9.84,  9.9 ,  9.96, 10.02, 10.08, 10.14, 10.2 ,
       10.26, 10.32, 10.38, 10.44, 10.5 , 10.56, 10.62, 10.68, 10.74,
       10.8 , 10.86, 10.92, 10.98, 11.04, 11.1 , 11.16, 11.22, 11.28,
       11.34, 11.4 , 11.46, 11.52, 11.58, 11.64, 11.7 , 11.76, 11.82,
       11.88, 11.94]), 0.06)

Я хочу узнать, сколько переменных будет возвращено.Для этого я попытался

print (len(x))

, который я получил 2.

Это не может быть правильно, не так ли?Есть только две переменные, так как одна ложь в [], а затем истина.Или я где-то допустил ошибку? Если да, что мне нужно сделать, чтобы получить число возвращаемых переменных.

Ответы [ 3 ]

0 голосов
/ 19 ноября 2018

В numpy форма позволяет получить размерность массива.Например, здесь x.shape или x [0] .shape.Проблема в том, что вы также возвращаете шаг, на котором генерируются ваши значения, так что у вас есть массив значений и шаг, поэтому len (x) дает вам 2, потому что x содержит два объекта.Также обратите внимание, что вы исключаете последнее значение в вашем вызове linspace (), что означает, что вы не достигли 12 в генерируемом массиве.

0 голосов
/ 19 ноября 2018

Вывод, который вы получаете, состоит из tuple с двумя элементами. Первый элемент x - это массив numpy длиной 200, а второй элемент x - это число (0.06). Вот как вы можете найти это:

import numpy as np

x = np.linspace(0, 12, 200, False, True, None)

print x

>>> (np.array([ 0.  ,  0.06,  0.12,  0.18,  0.24,  0.3 ,  0.36,  0.42,  0.48,
    0.54,  0.6 ,  0.66,  0.72,  0.78,  0.84,  0.9 ,  0.96,  1.02,
    1.08,  1.14,  1.2 ,  1.26,  1.32,  1.38,  1.44,  1.5 ,  1.56,
    1.62,  1.68,  1.74,  1.8 ,  1.86,  1.92,  1.98,  2.04,  2.1 ,
    2.16,  2.22,  2.28,  2.34,  2.4 ,  2.46,  2.52,  2.58,  2.64,
    2.7 ,  2.76,  2.82,  2.88,  2.94,  3.  ,  3.06,  3.12,  3.18,
    3.24,  3.3 ,  3.36,  3.42,  3.48,  3.54,  3.6 ,  3.66,  3.72,
    3.78,  3.84,  3.9 ,  3.96,  4.02,  4.08,  4.14,  4.2 ,  4.26,
    4.32,  4.38,  4.44,  4.5 ,  4.56,  4.62,  4.68,  4.74,  4.8 ,
    4.86,  4.92,  4.98,  5.04,  5.1 ,  5.16,  5.22,  5.28,  5.34,
    5.4 ,  5.46,  5.52,  5.58,  5.64,  5.7 ,  5.76,  5.82,  5.88,
    5.94,  6.  ,  6.06,  6.12,  6.18,  6.24,  6.3 ,  6.36,  6.42,
    6.48,  6.54,  6.6 ,  6.66,  6.72,  6.78,  6.84,  6.9 ,  6.96,
    7.02,  7.08,  7.14,  7.2 ,  7.26,  7.32,  7.38,  7.44,  7.5 ,
    7.56,  7.62,  7.68,  7.74,  7.8 ,  7.86,  7.92,  7.98,  8.04,
    8.1 ,  8.16,  8.22,  8.28,  8.34,  8.4 ,  8.46,  8.52,  8.58,
    8.64,  8.7 ,  8.76,  8.82,  8.88,  8.94,  9.  ,  9.06,  9.12,
    9.18,  9.24,  9.3 ,  9.36,  9.42,  9.48,  9.54,  9.6 ,  9.66,
    9.72,  9.78,  9.84,  9.9 ,  9.96, 10.02, 10.08, 10.14, 10.2 ,
   10.26, 10.32, 10.38, 10.44, 10.5 , 10.56, 10.62, 10.68, 10.74,
   10.8 , 10.86, 10.92, 10.98, 11.04, 11.1 , 11.16, 11.22, 11.28,
   11.34, 11.4 , 11.46, 11.52, 11.58, 11.64, 11.7 , 11.76, 11.82,
   11.88, 11.94]), 0.06)

print type(x) 
>>> <type 'tuple'>

print len(x[0])  #This is the length of the first element of x (x[0]).
>>> 200 

Причина, по которой print len(x) возвращает 2, заключается в том, что x - это кортеж с 2 элементами. В то же время x[0] (, т.е. , первый элемент x) представляет собой массив numpy с 200 элементами. Вторым элементом x (x[1]) является число 0.06.

0 голосов
/ 19 ноября 2018

Вы установили для параметра retstep значение True, таким образом, вы получите кортеж, состоящий из вашего массива и размера шага.Вы можете получить доступ к вашему массиву по x[0], а его длина по len(x[0]).Но я бы предпочел сделать следующее:

x, stepsize = np.linspace(0, 12, 200, False, True, None)

И тогда у вас действительно будет массив в x, поэтому len(x) будет работать, как и ожидалось.

...