То есть в метод передается допустим int[4][5] i
Хотелось бы элегантно, без циклов определить число “строк”, “колонок” в двумерном массиве. Со строками понятно i.length отдаст 4, а вот колонки как?
задан 17 июн 2015 в 12:03
Uladzimir KordzikUladzimir Kordzik
1171 золотой знак1 серебряный знак7 бронзовых знаков
1
Если гарантируется, что все “строки” одинаковой длины и в массиве есть хотя бы одна “строка”:
int rows = a.length;
int columns = a[0].length;
Без соблюдения этих условий — никак.
ответ дан 17 июн 2015 в 12:11
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
1
Что мешает вам взять i[0].length
?
ответ дан 17 июн 2015 в 12:12
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
-
#3
Как определить количесво столбцов в массиве?
Dim $Array[10][2]
MsgBox(0, '', UBound($Array, 0))
ReDim $Array[10]
MsgBox(0, '', UBound($Array, 0))
Это называется размерностью массива.
-
#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)
Всем спасибо.
- HowTo
- NumPy How-To’s
- Получить количество строк в NumPy
Muhammad Maisam Abbas
4 Июль 2021
Из этого туториала Вы узнаете, как получить количество строк в массиве 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
.
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.
Возвращает количество столбцов в определенном массиве или диапазоне.
Пример использования
ЧИСЛСТОЛБ(A9:W62)
ЧИСЛСТОЛБ({1; 2; 3; 4; 5})
Синтаксис
ЧИСЛСТОЛБ(диапазон)
диапазон
– диапазон, в котором нужно подсчитать количество столбцов.
См. также:
ЧСТРОК
: Возвращает количество строк в определенном массиве или диапазоне.
СТРОКА
: Возвращает номер строки, соответствующей указанной ячейке.
СТОЛБЕЦ
: Возвращает номер столбца для указанной ячейки. Значение “1” соответствует столбцу A.
Примеры
Возвращает количество столбцов в заданном диапазоне.
Эта информация оказалась полезной?
Как можно улучшить эту статью?