←back to thread

I don't like NumPy

(dynomight.net)
480 points MinimalAction | 2 comments | | HN request time: 0s | source
Show context
credit_guy ◴[] No.43998940[source]
Here's how you do it: focus on the simple case, solve it, then ask Copilot to vectorize the code. Life is too short.
replies(1): >>44004447 #
1. gus_massa ◴[] No.44004447[source]
I never tried that. Can you use this method with the example in the article and post it here? Does it work of Copilot hallucinates magical functions? (I'd be worry if I ever have to fix the code.)
replies(1): >>44004983 #
2. credit_guy ◴[] No.44004983[source]
"Here’s how you can create a test case to compare the performance of the for-loop method and the vectorized method using numpy.linalg.solve. I will provide the Python code for you to test this."

    import numpy as np
    import time

    # Create random test data
    np.random.seed(42)  # For reproducibility
    A = np.random.rand(100, 5, 5)  # 100 random 5x5 matrices
    x = np.random.rand(100, 5)     # 100 random vectors of length 5

    # Method 1: For-loop approach
    start_time = time.time()
    y_loop = np.empty_like(x)
    for i in range(100):
        y_loop[i, :] = np.linalg.solve(A[i, :, :], x[i, :])
    loop_time = time.time() - start_time

    # Method 2: Vectorized approach
    start_time = time.time()
    y_vectorized = np.linalg.solve(A, x)
    vectorized_time = time.time() - start_time

    # Verify correctness
    correctness = np.allclose(y_loop, y_vectorized)

    # Print results
    print(f"For-loop method time: {loop_time:.6f} seconds")
    print(f"Vectorized method time: {vectorized_time:.6f} seconds")
    print(f"Results are {'correct' if correctness else 'incorrect'}")
For-loop method time: 0.001004 seconds Vectorized method time: 0.000000 seconds Results are correct