Tôi đang cố gắng tạo ra các ma trận đối xứng theo dạng gumpy. Cụ thể, các ma trận này có các mục nhập địa điểm ngẫu nhiên và trong mỗi mục nhập, nội dung có thể là ngẫu nhiên. Dọc theo đường chéo chính chúng ta không quan tâm đến những gì enties đang có trong đó, vì vậy tôi đã ngẫu nhiên những người là tốt.Tạo ma trận đối xứng trong Numpy
Cách tiếp cận tôi đã thực hiện là tạo ra một nxn tất cả các ma trận zero và chỉ đơn giản là lặp qua các chỉ số của ma trận. Tuy nhiên, xem xét looping là tương đối đắt tiền trong python, tôi tự hỏi nếu tôi có thể đạt được điều tương tự mà không cần sử dụng python cho vòng.
Có một số thứ được xây dựng thành gọn gàng cho phép tôi đạt được mục tiêu của mình hiệu quả hơn không?
Đây là mã hiện tại của tôi:
import numpy as np
import random
def empty(x, y):
return x*0
b = np.fromfunction(empty, (n, n), dtype = int)
for i in range(0, n):
for j in range(0, n):
if i == j:
b[i][j] = random.randrange(-2000, 2000)
else:
switch = random.random()
random.seed()
if switch > random.random():
a = random.randrange(-2000, 2000)
b[i][j] = a
b[j][i] = a
else:
b[i][j] = 0
b[j][i] = 0
Cảm ơn! Đó là một giải pháp hiệu quả. Tuy nhiên, có cách nào tôi có thể làm cho nó để đặt số không ở những nơi ngẫu nhiên? Ma trận này được cho là đại diện cho một loại ma trận kề cho một đồ thị, do đó, có một ma trận với số không phân phối ngẫu nhiên là thích hợp hơn. – Ryan
@Ryan: Bạn có quan tâm đến loại phân phối mà các mục ngẫu nhiên có không? Nếu bạn thêm 'b + b.T', bạn sẽ nhận được một bản phân phối không đồng nhất tập trung quanh 0. – unutbu
Tôi đang xác minh một số thuộc tính của ma trận.Nỗ lực của nó nhiều hơn là cung cấp bằng chứng thuyết phục về một số tính chất toán học, do đó sự phân bố ở đây không quan trọng lắm. Cảm ơn mặc dù! – Ryan