Как найти количество столбцов в массиве

То есть в метод передается допустим int[4][5] i
Хотелось бы элегантно, без циклов определить число “строк”, “колонок” в двумерном массиве. Со строками понятно i.length отдаст 4, а вот колонки как?

задан 17 июн 2015 в 12:03

Uladzimir Kordzik's user avatar

Uladzimir KordzikUladzimir Kordzik

1171 золотой знак1 серебряный знак7 бронзовых знаков

1

Если гарантируется, что все “строки” одинаковой длины и в массиве есть хотя бы одна “строка”:

int rows = a.length;
int columns = a[0].length;

Без соблюдения этих условий — никак.

ответ дан 17 июн 2015 в 12:11

andreycha's user avatar

andreychaandreycha

25k4 золотых знака45 серебряных знаков81 бронзовый знак

Если в каждом столбце заданного двумерного массива равное количество элементов, то можно просто воспользоваться:

i[0].length;

Но если есть вероятность, что в разных столбцах может быть разное количество элементов, то для определения максимального количества строк можно пробежаться по каждом столбцу по отдельности:

int maxRow = 0;
for (int j = 0; j < i.length; j++) {
    if (maxRow < i[j].length) {
        maxRow = i[j].length;
    }
}

ответ дан 1 сен 2022 в 5:59

artmuz42's user avatar

1

Что мешает вам взять i[0].length?

Nicolas Chabanovsky's user avatar

ответ дан 17 июн 2015 в 12:12

zzashpaupat's user avatar

zzashpaupatzzashpaupat

1,4298 серебряных знаков13 бронзовых знаков

It’s important to understand that Java doesn’t really have two-dimensional arrays. It has arrays of arrays. That means, for instance, that you can have this:

int[][] array=
{
    {1},
    {1, 2, 3},
    {1, 2, 3, 4, 5},
    {1, 2}
};

So there is no one upper bound of the second level. Java arrays are inherently jagged, each of the second level in the above has its own length.

So to loop them correctly, you have to check for each of the second-level arrays:

int x, y;
int[] second;

for (x = 0; x < array.length; ++x) {
    second = array[x];
    for (y = 0; y < second.length; ++y) {
         // ....
    }
}

Full example: Live Copy

public class ArrayExample {
    public static void main(String[] args) {
        int[][] array=
        {
            {1},
            {1, 2, 3},
            {1, 2, 3, 4, 5},
            {1, 2}
        };
        int x, y;
        int[] second;

        for (x = 0; x < array.length; ++x) {
          second = array[x];
          for (y = 0; y < second.length; ++y) {
              System.out.println(x + "," + y + ": " + second[y]);
          }
          System.out.println();
        }
    }
}

Output:

0,0: 1

1,0: 1
1,1: 2
1,2: 3

2,0: 1
2,1: 2
2,2: 3
2,3: 4
2,4: 5

3,0: 1
3,1: 2

Or if you don’t need the indexes, just the values, you can use the enhanced for loop: Live Example

public class ArrayExample {
    public static void main(String[] args) {
        int[][] array=
        {
            {1},
            {1, 2, 3},
            {1, 2, 3, 4, 5},
            {1, 2}
        };

        for (int[] second : array) {
          for (int entry : second) {
              System.out.println(entry);
          }
          System.out.println();
        }
    }
}

Output:

1

1
2
3

1
2
3
4
5

1
2

  • #1

При обращении к одномерному массиву как к многомерному скрипт вылетает с ошибкой.
Хотел попытаться определить количество столбцов в массиве с помощью _ArrayToString, но
по каким-то причинам не работает _ArrayToString – возвращает пустую строку, в то время как
_ArrayDisplay возвращает массив. В том же скрипте с другими массивами _ArrayToString работает корректно

  • #2

Это?

Dim $Array[10] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
MsgBox(0, '', UBound($Array) -1)

For $i = 0 To UBound($Array) -1
	ConsoleWrite($Array[$i] & @CRLF)
Next

Garrett


  • #3

Как определить количесво столбцов в массиве?

Dim $Array[10][2]
MsgBox(0, '', UBound($Array, 0))
ReDim $Array[10]
MsgBox(0, '', UBound($Array, 0))

Это называется размерностью массива.

madmasles


  • #4

Vovsla,
Еще так можно.

$iRandX = Random(10, 100, 1)
$iRandY = Random(10, 100, 1)
$iRandZ = Random(10, 100, 1)
Dim $aRand[$iRandX][$iRandY][$iRandZ]

$iUb = UBound($aRand, 0)
For $i = 1 To $iUb
	ConsoleWrite($i & @TAB & UBound($aRand, $i) & @LF)
Next

  • #5

Написал “количество столбцов” вместо размерности т.к. хотел конкретизировать, ведь размерностью можно назвать и кол-во строк.

Опять поторопился не дочитал манул, про UBound знал давно, но думал что он возвращает только кол-во строк.
Все решается UBound($myArray, 2)
Всем спасибо.

  1. HowTo
  2. NumPy How-To’s
  3. Получить количество строк в NumPy

Muhammad Maisam Abbas
4 Июль 2021

Получить количество строк в NumPy

Из этого туториала Вы узнаете, как получить количество строк в массиве NumPy.

Получите количество строк в массиве NumPy с помощью свойства array.shape

Свойство array.shape массивов NumPy получает форму массива. Форма массива представляет количество элементов в каждом измерении массива. В следующем примере кода показано, как получить количество строк, а также количество столбцов 2D-массива NumPy с помощью свойства array.shape.

import numpy as np

array = np.array([[1,3,5],[2,4,6]])

rows, columns = array.shape

print("Rows = ",rows)
print("Columns = ", columns)

Выход:

Сначала мы создали 2D-массив NumPy с функцией np.array(). Затем мы определили количество строк и столбцов в массиве с помощью свойства array.shape и сохранили результаты в переменных rows и columns. В итоге мы распечатали значения внутри rows и columns.

Muhammad Maisam Abbas avatar
Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Возвращает количество столбцов в определенном массиве или диапазоне.

Пример использования

ЧИСЛСТОЛБ(A9:W62)

ЧИСЛСТОЛБ({1; 2; 3; 4; 5})

Синтаксис

ЧИСЛСТОЛБ(диапазон)

  • диапазон – диапазон, в котором нужно подсчитать количество столбцов.

См. также:

ЧСТРОК: Возвращает количество строк в определенном массиве или диапазоне.

СТРОКА: Возвращает номер строки, соответствующей указанной ячейке.

СТОЛБЕЦ: Возвращает номер столбца для указанной ячейки. Значение “1” соответствует столбцу A.

Примеры

Возвращает количество столбцов в заданном диапазоне.

Эта информация оказалась полезной?

Как можно улучшить эту статью?

Добавить комментарий