Я относительно новичок в python, но я пытаюсь понять что-то, что кажется основным.Почему x [:, 0] = x [0] для однострочного вектора?
Создать вектор:
x = np.linspace(0,2,3)
Out[38]: array([ 0., 1., 2.])
теперь, почему не х [:, 0] значение аргумента?
IndexError: invalid index
Это должно быть x [0]. У меня есть функция, которую я звоню, которая вычисляет:
np.sqrt(x[:,0]**2 + x[:,1]**2 + x[:,2]**2)
Почему я не могу сказать, что я прав, независимо от ввода? Это много других языков, оно не зависит от наличия других строк в массиве. Возможно, я неправильно понимаю что-то фундаментальное - извините, если так. Я бы хотел избежать:
if len(x) == 1:
norm = np.sqrt(x[0]**2 + x[1]**2 + x[2]**2)
else:
norm = np.sqrt(x[:,0]**2 + x[:,1]**2 + x[:,2]**2)
всюду. Конечно, есть способ обойти это ... спасибо.
Edit: пример его работы на другом языке Matlab:
>> b = [1,2,3]
b =
1 2 3
>> b(:,1)
ans =
1
>> b(1)
ans =
1
Это неправда, потому что вы указали индекс для измерения 1 и индекс для измерения 2, когда ваш массив имеет только одно измерение. Python является явным, а не подразумеваемым. Приведите пример на другом языке, и мы поможем вам написать интерпретацию массива, который делает те же неявные предположения. – Paul
См. Править, пожалуйста. – Griff
Вы можете написать 'x.ndim' вместо' len (x) '. Это не изменит, но это четкое и понятное имя. – jorgeca