- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否有更 pythonic 的方式来执行以下操作:
nhập numpy dưới dạng np
def diagonal(A):
(x,y,y) = A.shape
diags = []
for a in A: diags.append(np.diagonal(a))
result = np.vstack(diags)
assert result.shape == (x,y)
trả về kết quả
1 Câu trả lời
方法 #1
一个干净的方式是使用np.diagonal
在输入数组的转置版本上,像这样 -
np.diagonal(A.T)
基本上,我们使用 A.T
翻转输入数组的维度,让 np.diagonal
使用最后两个轴来提取对角线元素,因为默认情况下否则它会使用前两个轴。最好的事情是这适用于任意维数的数组。
方法 #2
这是使用 advanced and basic indexing
组合的另一种方法-
m,n = A.shape[:2]
out = A[np.arange(m)[:,None],np.eye(n,dtype=bool)]
还可以通过基本索引
进行一些 reshape -
out = A.reshape(m,-1)[:,np.eye(n,dtype=bool).ravel()]
sample 运行-
In [87]: A
Out[87]:
array([[[73, 52, 62],
[20, 7, 7],
[ 1, 68, 89]],
[[15, 78, 98],
[24, 22, 35],
[19, 1, 91]],
[[ 5, 37, 64],
[22, 4, 43],
[84, 45, 12]],
[[24, 45, 42],
[70, 45, 1],
[ 6, 48, 60]]])
In [88]: np.diagonal(A.T)
Out[88]:
array([[73, 7, 89],
[15, 22, 91],
[ 5, 4, 12],
[24, 45, 60]])
In [89]: m,n = A.shape[:2]
In [90]: A[np.arange(m)[:,None],np.eye(n,dtype=bool)]
Out[90]:
array([[73, 7, 89],
[15, 22, 91],
[ 5, 4, 12],
[24, 45, 60]])
关于numpy - 多维 numpy 数组的对角线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37870187/
Khi xuất ra một tập lệnh, tôi có mảng numpy masked và mảng numpy chuẩn. Làm thế nào tôi có thể dễ dàng kiểm tra xem một mảng có bị masked (có dữ liệu, thuộc tính mask) khi tôi chạy tập lệnh? Câu trả lời tốt nhất là bạn có thể sử dụng isin
Câu hỏi của tôi giả sử tôi có = np.array([ np.array([1,2]), np.array([3,4]), np.array([5,6]), np.array([7,8]), ...7,8]), np.array([7,8]), np.array
Numpy có tích hợp sẵn chức năng lũy thừa ma trận không? (Như user2357112 đã chỉ ra, thực ra tôi đang tìm kiếm phép rút gọn mô-đun theo từng phần tử) Một cách để thực hiện phép lũy thừa mô-đun cho các số thông thường là sử dụng phép lũy thừa bình phương (https://en
Tôi đã triển khai gradient descent này trong Numpy: def gradientDescent(X, y, theta, alpha, iterations): m = len(y) for i
Tôi có một dự án chạy trên CentOS7 sử dụng Numpy. Vấn đề là việc cài đặt phần phụ thuộc này mất rất nhiều thời gian. Do đó, tôi đã thử yum cài đặt thư viện numpy trước khi pip cài đặt nó. Vì vậy, tôi chạy:
để xử lý dữ liệu tôi muốn xoay. Xin lưu ý rằng tôi chỉ sử dụng được numpy và không thể sử dụng pandas. Dữ liệu gốc như sau: dữ liệu = [ [ 1, a, [, ] ], [ 1, b, [, ] ], [ 2,
numpy.random.seed(7) Tôi đã thấy nhiều con số khác nhau cho tập hạt giống này trong nhiều hướng dẫn về phân tích dữ liệu và học máy khác nhau. Việc lựa chọn một số hạt giống cụ thể có thực sự tạo nên sự khác biệt không? Hoặc bất kỳ số nào cũng được? Mục đích của việc chọn số lượng hạt giống là để đảm bảo khả năng tái tạo của cùng một thí nghiệm.
Tôi cần đọc một phần của mảng numpy khổng lồ được lưu trữ trong tệp ánh xạ bộ nhớ, xử lý dữ liệu và lặp lại cho phần khác của mảng. Toàn bộ mảng numpy chiếm khoảng 50 GB và máy của tôi có RAM 8 GB. Ban đầu tôi sử dụng numpy.m
để xử lý dữ liệu tôi muốn xoay. Xin lưu ý rằng tôi chỉ sử dụng được numpy và không thể sử dụng pandas. Dữ liệu gốc như sau: dữ liệu = [ [ 1, a, [, ] ], [ 1, b, [, ] ], [ 2,
Có vẻ như bất cứ điều gì có thể thực hiện được với numpy.empty() đều có thể dễ dàng thực hiện được với numpy.ndarray(), ví dụ: >>> np.empty(shape=(2, 2), dtype=np.dtype('d
Tôi có nhiều dạng khác nhau trong một mảng numpy lớn và tôi muốn tính khoảng cách Euclide từ cạnh này đến cạnh kia giữa chúng bằng numpy và scipy. Lưu ý: Tôi đã tìm kiếm điều này và nó khác với các câu hỏi trước đó trong stack vì tôi muốn lấy giá trị của khối thẻ trong mảng
Tôi có một mảng numpy các đối tượng có kích thước (2x3). Chúng tôi gọi nó là M1. Trong M1 có 6 mảng numpy. Hình dạng của các mảng trong một hàng nhất định của M1 là giống nhau, nhưng chúng khác với hình dạng của các mảng trong bất kỳ hàng nào khác của M1. Nghĩa là, M1 = [ [
Làm thế nào tôi có thể viết tích vô hướng sau bằng cách sử dụng ký hiệu Einstein? nhập numpy dưới dạng np LHS = np.ones((5,20,2)) RHS = np.ones((20,2)) np.sum([ np.
Giả sử tôi có np.array của a = [0, 1, 1, 0, 0, 1] và b = [1, 1, 0, 0, 0, 1] Tôi muốn một ma trận c mới sao cho nếu a[i] = 0 và b[i] = 0
Tôi có một mảng numpy có dạng (32,5). Mỗi phần tử của lô chứa một mảng numpy batch_elem = [s,_,_,_,_] trong đó s = [img,val1,val
Hãy thử đào tạo mạng nơ-ron một lớp cho bài toán phân loại đa nhãn dựa trên văn bản. mô hình = Mô hình tuần tự().thêm(Dense(20, input_dim=400, kernel_initializer='
Đầu tiên là một ví dụ đơn giản import numpy as np a = np.ones((2,2)) b = 2*np.ones((2,2)) c = 3*np.ones((2,2)) d = 4*np.
Tôi đang cố gắng tính trung bình một mảng numpy 2D. Vì vậy, tôi đã sử dụng numpy.mean nhưng kết quả lại là mảng rỗng. nhập numpy dưới dạng np ws1 = np.array(ws1) ws1_I8 = np.ar
nhập numpy dưới dạng np x = np.array([[1,2 ,3], [9,8,7]]) y = np.array([[2,1 ,0], [1,0,2]]) x[y] Đầu ra mong đợi: ar
Tôi có hai mảng A (4000,4000) trong đó chỉ có đường chéo được điền dữ liệu và mảng B (4000,5) trong đó cả hai đều được điền dữ liệu. Có cách nào nhanh hơn để nhân (dot) các mảng này ngoài hàm numpy.dot(a,b) không? Cho đến nay, tôi đã tìm thấy
Tôi là một lập trình viên xuất sắc, rất giỏi!