Hướng dẫn three-dimensional array python - Python mảng ba chiều

Có nhiều cách để giải quyết vấn đề của bạn.

Nội phân chính

  • Điểm và dòng ba chiều
  • Lô đường viền ba chiều
  • Khung dây và lô bề mặt
  • Tam giác bề mặt
  • Ví dụ: Hình dung một dải Möbius
  • Làm thế nào để bạn vẽ một mảng numpy 3D trong Python?
  • Bạn có thể vẽ mảng numpy không?
  • Làm thế nào để bạn vẽ dữ liệu 3D trong Python?
  • Làm thế nào để bạn tạo ra một mảng 3D trong Python?

  1. Đầu tiên như được chấp nhận câu trả lời của @Robert. Đây là giải pháp tổng quát cho nó:
def multi_dimensional_list(value, *args):
  #args dimensions as many you like. EG: [*args = 4,3,2 => x=4, y=3, z=2]
  #value can only be of immutable type. So, don't pass a list here. Acceptable value = 0, -1, 'X', etc.
  if len(args) > 1:
    return [ multi_dimensional_list(value, *args[1:]) for col in range(args[0])]
  elif len(args) == 1: #base case of recursion
    return [ value for col in range(args[0])]
  else: #edge case when no values of dimensions is specified.
    return None

Eg:

>>> multi_dimensional_list(-1, 3, 4)  #2D list
[[-1, -1, -1, -1], [-1, -1, -1, -1], [-1, -1, -1, -1]]
>>> multi_dimensional_list(-1, 4, 3, 2)  #3D list
[[[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]]]
>>> multi_dimensional_list(-1, 2, 3, 2, 2 )  #4D list
[[[[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]]], [[[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]]]]

P.S Nếu bạn muốn thực hiện xác thực cho các giá trị chính xác cho ARGS, tức là chỉ các số tự nhiên, thì bạn có thể viết hàm trình bao bọc trước khi gọi hàm này.

  1. Thứ hai, bất kỳ mảng chiều đa chiều nào cũng có thể được viết dưới dạng mảng thứ nguyên đơn. Điều này có nghĩa là bạn không cần một mảng đa chiều. Dưới đây là chức năng để chuyển đổi chỉ mục:
def convert_single_to_multi(value, max_dim):
  dim_count = len(max_dim)
  values = [0]*dim_count
  for i in range(dim_count-1, -1, -1): #reverse iteration
    values[i] = value%max_dim[i]
    value /= max_dim[i]
  return values


def convert_multi_to_single(values, max_dim):
  dim_count = len(max_dim)
  value = 0
  length_of_dimension = 1
  for i in range(dim_count-1, -1, -1): #reverse iteration
    value += values[i]*length_of_dimension
    length_of_dimension *= max_dim[i]
  return value

Vì, các chức năng này nghịch đảo của nhau, đây là đầu ra:

>>> convert_single_to_multi(convert_multi_to_single([1,4,6,7],[23,45,32,14]),[23,45,32,14])
[1, 4, 6, 7]
>>> convert_multi_to_single(convert_single_to_multi(21343,[23,45,32,14]),[23,45,32,14])
21343
  1. Nếu bạn lo lắng về các vấn đề về hiệu suất thì bạn có thể sử dụng một số thư viện như gấu trúc, numpy, v.v.

Tôi muốn vẽ kết quả của một phương pháp số cho một hệ thống ODE ba chiều. Đầu ra của tôi ở dạng (giả sử chúng ta đã tính toán ba bước):

Nội phân chính

  • Điểm và dòng ba chiều
  • Lô đường viền ba chiều
  • Khung dây và lô bề mặt
  • Tam giác bề mặt
  • Ví dụ: Hình dung một dải Möbius
  • Làm thế nào để bạn vẽ một mảng numpy 3D trong Python?
  • Bạn có thể vẽ mảng numpy không?
  • Làm thế nào để bạn vẽ dữ liệu 3D trong Python?
  • Làm thế nào để bạn tạo ra một mảng 3D trong Python?
import numpy as np
v= np.array([[1,2,3], [4,5,6], [7,8,9]])

Đầu tiên như được chấp nhận câu trả lời của @Robert. Đây là giải pháp tổng quát cho nó:

P.S Nếu bạn muốn thực hiện xác thực cho các giá trị chính xác cho ARGS, tức là chỉ các số tự nhiên, thì bạn có thể viết hàm trình bao bọc trước khi gọi hàm này.


Thứ hai, bất kỳ mảng chiều đa chiều nào cũng có thể được viết dưới dạng mảng thứ nguyên đơn. Điều này có nghĩa là bạn không cần một mảng đa chiều. Dưới đây là chức năng để chuyển đổi chỉ mục:

  • Vì, các chức năng này nghịch đảo của nhau, đây là đầu ra:figure() method.
  • Nếu bạn lo lắng về các vấn đề về hiệu suất thì bạn có thể sử dụng một số thư viện như gấu trúc, numpy, v.v.'~.axes.Axes' to the figure as part of a subplot arrangement using add_subplot() method.
  • Tôi muốn vẽ kết quả của một phương pháp số cho một hệ thống ODE ba chiều. Đầu ra của tôi ở dạng (giả sử chúng ta đã tính toán ba bước):size=(3, 3, 3).
  • Trong đó giá trị đầu tiên trong mỗi 3-Tuple là tọa độ x, thứ hai là tọa độ y và thứ ba là tọa độ z.
  • Tôi muốn cách đơn giản và hiệu quả nhất để vẽ các điểm này trên lưới 3D. Vấn đề dường như là dữ liệu nên được định hình như
    def convert_single_to_multi(value, max_dim):
      dim_count = len(max_dim)
      values = [0]*dim_count
      for i in range(dim_count-1, -1, -1): #reverse iteration
        values[i] = value%max_dim[i]
        value /= max_dim[i]
      return values
    
    
    def convert_multi_to_single(values, max_dim):
      dim_count = len(max_dim)
      value = 0
      length_of_dimension = 1
      for i in range(dim_count-1, -1, -1): #reverse iteration
        value += values[i]*length_of_dimension
        length_of_dimension *= max_dim[i]
      return value
    
    1.
  • Để tạo biểu đồ 3D từ một mảng numpy 3D, chúng ta có thể tạo một mảng 3D bằng cách sử dụng Numpy và trích xuất các điểm X, Y và Z.show() method.

Tạo một hình mới hoặc kích hoạt một hình hiện tại bằng phương thức Hình ().

import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
data = np.random.random(size=(3, 3, 3))
z, x, y = data.nonzero()
ax.scatter(x, y, z, c=z, alpha=1)
plt.show()

Thêm một '~ .axes.axes' vào hình như là một phần của cách sắp xếp subplot bằng phương thức add_subplot ().

Tạo một dữ liệu ngẫu nhiên có kích thước = (3, 3, 3).

  • Trích xuất dữ liệu X, Y và Z từ mảng 3D.
  • Sơ đồ các điểm phân tán 3D trên trục được tạo
  • Để hiển thị hình, sử dụng phương thức show ().
  • Thí dụ
  • Đầu ra
  • Cập nhật vào ngày 15 tháng 5 năm 2021 12:02:05
  • Câu hỏi và câu trả lời liên quan
  • Làm thế nào để biểu đồ bề mặt/âm mưu 3D từ DataFrame (matplotlib)?
  • Tạo hoạt hình 3D bằng cách sử dụng matplotlib
  • Làm thế nào để hiển thị một biểu đồ 3D của một mảng 3D isosurface trong matplotlib mplot3d hoặc tương tự?
  • Tiết kiệm bản nhạc 3D trong PDF 3D với Python
  • Làm thế nào để vẽ một dòng liên tục 3D trong matplotlib?
  • Làm thế nào để vẽ một bộ sưu tập bản vá 3D trong matplotlib?
  • Sơ đồ matplotlib 3D cốt truyện_surface với phép chiếu âm mưu đường viền
  • Vẽ các thanh 3D không có trục trong matplotlib
  • Đặt tỷ lệ khung hình của biểu đồ 3D trong matplotlib

Làm thế nào để vẽ một điểm trên các trục 3D trong matplotlib?

In [1]:

from mpl_toolkits import mplot3d

Vẽ biểu đồ bề mặt 3D từ dữ liệu {x, y, z} trong python matplotlib

In [2]:

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

In [3]:

fig = plt.figure()
ax = plt.axes(projection='3d')

Làm thế nào để vẽ một bản đồ mật độ 3D trong Python với matplotlib?

Điểm và dòng ba chiều

Làm thế nào để vẽ đồ thị 3D bằng python matplotlib?

In [4]:

ax = plt.axes(projection='3d')

# Data for a three-dimensional line
zline = np.linspace(0, 15, 1000)
xline = np.sin(zline)
yline = np.cos(zline)
ax.plot3D(xline, yline, zline, 'gray')

# Data for three-dimensional scattered points
zdata = 15 * np.random.random(100)
xdata = np.sin(zdata) + 0.1 * np.random.randn(100)
ydata = np.cos(zdata) + 0.1 * np.random.randn(100)
ax.scatter3D(xdata, ydata, zdata, c=zdata, cmap='Greens');

Lưu ý rằng theo mặc định, các điểm phân tán có tính minh bạch của chúng được điều chỉnh để mang lại cảm giác về độ sâu trên trang. Mặc dù hiệu ứng ba chiều đôi khi rất khó nhìn thấy trong một hình ảnh tĩnh, một chế độ xem tương tác có thể dẫn đến một số trực giác đẹp về bố cục của các điểm.

Lô đường viền ba chiều

Tương tự như các ô đường viền mà chúng tôi đã khám phá về mật độ và sơ đồ đường viền,

def convert_single_to_multi(value, max_dim):
  dim_count = len(max_dim)
  values = [0]*dim_count
  for i in range(dim_count-1, -1, -1): #reverse iteration
    values[i] = value%max_dim[i]
    value /= max_dim[i]
  return values


def convert_multi_to_single(values, max_dim):
  dim_count = len(max_dim)
  value = 0
  length_of_dimension = 1
  for i in range(dim_count-1, -1, -1): #reverse iteration
    value += values[i]*length_of_dimension
    length_of_dimension *= max_dim[i]
  return value
2 chứa các công cụ để tạo ra các ô cứu trợ ba chiều bằng cách sử dụng các đầu vào tương tự. Giống như các ô
def convert_single_to_multi(value, max_dim):
  dim_count = len(max_dim)
  values = [0]*dim_count
  for i in range(dim_count-1, -1, -1): #reverse iteration
    values[i] = value%max_dim[i]
    value /= max_dim[i]
  return values


def convert_multi_to_single(values, max_dim):
  dim_count = len(max_dim)
  value = 0
  length_of_dimension = 1
  for i in range(dim_count-1, -1, -1): #reverse iteration
    value += values[i]*length_of_dimension
    length_of_dimension *= max_dim[i]
  return value
9 hai chiều,
>>> convert_single_to_multi(convert_multi_to_single([1,4,6,7],[23,45,32,14]),[23,45,32,14])
[1, 4, 6, 7]
>>> convert_multi_to_single(convert_single_to_multi(21343,[23,45,32,14]),[23,45,32,14])
21343
0 yêu cầu tất cả các dữ liệu đầu vào phải ở dạng các lưới chính quy hai chiều, với dữ liệu Z được đánh giá tại mỗi điểm. Ở đây chúng tôi sẽ hiển thị sơ đồ đường viền ba chiều của chức năng hình sin ba chiều:

In [5]:

>>> multi_dimensional_list(-1, 3, 4)  #2D list
[[-1, -1, -1, -1], [-1, -1, -1, -1], [-1, -1, -1, -1]]
>>> multi_dimensional_list(-1, 4, 3, 2)  #3D list
[[[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]]]
>>> multi_dimensional_list(-1, 2, 3, 2, 2 )  #4D list
[[[[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]]], [[[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]]]]
0

In [6]:

>>> multi_dimensional_list(-1, 3, 4)  #2D list
[[-1, -1, -1, -1], [-1, -1, -1, -1], [-1, -1, -1, -1]]
>>> multi_dimensional_list(-1, 4, 3, 2)  #3D list
[[[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]]]
>>> multi_dimensional_list(-1, 2, 3, 2, 2 )  #4D list
[[[[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]]], [[[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]]]]
1

Đôi khi góc xem mặc định không tối ưu, trong trường hợp đó chúng ta có thể sử dụng phương pháp

>>> convert_single_to_multi(convert_multi_to_single([1,4,6,7],[23,45,32,14]),[23,45,32,14])
[1, 4, 6, 7]
>>> convert_multi_to_single(convert_single_to_multi(21343,[23,45,32,14]),[23,45,32,14])
21343
1 để đặt góc độ cao và góc phương vị. Trong ví dụ sau, chúng ta sẽ sử dụng độ cao 60 độ (nghĩa là 60 độ so với mặt phẳng X-Y) và góc phương vị 35 độ (nghĩa là xoay 35 độ ngược chiều kim đồng hồ về trục z):

Một lần nữa, lưu ý rằng loại xoay này có thể được thực hiện tương tác bằng cách nhấp và kéo khi sử dụng một trong các phụ trợ tương tác của Matplotlib.

Khung dây và lô bề mặt

Hai loại sơ đồ ba chiều khác hoạt động trên dữ liệu có lưới là khung dây và các ô bề mặt. Chúng lấy một lưới các giá trị và chiếu nó lên bề mặt ba chiều được chỉ định và có thể làm cho các dạng ba chiều kết quả khá dễ dàng để hình dung. Đây là một ví dụ về việc sử dụng khung dây:

In [8]:

>>> multi_dimensional_list(-1, 3, 4)  #2D list
[[-1, -1, -1, -1], [-1, -1, -1, -1], [-1, -1, -1, -1]]
>>> multi_dimensional_list(-1, 4, 3, 2)  #3D list
[[[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]]]
>>> multi_dimensional_list(-1, 2, 3, 2, 2 )  #4D list
[[[[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]]], [[[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]]]]
2

Một âm mưu bề mặt giống như một âm mưu khung dây, nhưng mỗi mặt của khung dây là một đa giác đầy. Thêm một colormap vào các đa giác đầy có thể hỗ trợ nhận thức về cấu trúc liên kết của bề mặt được hình dung:

Trong & nbsp; [9]:

>>> multi_dimensional_list(-1, 3, 4)  #2D list
[[-1, -1, -1, -1], [-1, -1, -1, -1], [-1, -1, -1, -1]]
>>> multi_dimensional_list(-1, 4, 3, 2)  #3D list
[[[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]]]
>>> multi_dimensional_list(-1, 2, 3, 2, 2 )  #4D list
[[[[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]]], [[[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]]]]
3

Lưu ý rằng mặc dù lưới các giá trị cho một biểu đồ bề mặt cần phải là hai chiều, nhưng nó không cần phải là trực tràng. Dưới đây là một ví dụ về việc tạo ra một lưới cực một phần, khi được sử dụng với biểu đồ

>>> convert_single_to_multi(convert_multi_to_single([1,4,6,7],[23,45,32,14]),[23,45,32,14])
[1, 4, 6, 7]
>>> convert_multi_to_single(convert_single_to_multi(21343,[23,45,32,14]),[23,45,32,14])
21343
2 có thể cho chúng ta một lát cắt vào chức năng mà chúng ta đang hình dung:

In [10]:

>>> multi_dimensional_list(-1, 3, 4)  #2D list
[[-1, -1, -1, -1], [-1, -1, -1, -1], [-1, -1, -1, -1]]
>>> multi_dimensional_list(-1, 4, 3, 2)  #3D list
[[[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]]]
>>> multi_dimensional_list(-1, 2, 3, 2, 2 )  #4D list
[[[[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]]], [[[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]]]]
4

Tam giác bề mặt

Đối với một số ứng dụng, các lưới được lấy mẫu đồng đều theo yêu cầu của các thói quen trên là quá hạn chế và bất tiện. Trong những tình huống này, các lô dựa trên tam giác có thể rất hữu ích. Điều gì sẽ xảy ra nếu thay vì một trận hòa thậm chí từ một cartesian hoặc lưới cực, thay vào đó chúng ta có một tập hợp các trận hòa ngẫu nhiên?

In [11]:

>>> multi_dimensional_list(-1, 3, 4)  #2D list
[[-1, -1, -1, -1], [-1, -1, -1, -1], [-1, -1, -1, -1]]
>>> multi_dimensional_list(-1, 4, 3, 2)  #3D list
[[[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]]]
>>> multi_dimensional_list(-1, 2, 3, 2, 2 )  #4D list
[[[[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]]], [[[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]]]]
5

Chúng ta có thể tạo ra một biểu đồ phân tán của các điểm để có được ý tưởng về bề mặt mà chúng ta đang lấy mẫu từ:

In [12]:

>>> multi_dimensional_list(-1, 3, 4)  #2D list
[[-1, -1, -1, -1], [-1, -1, -1, -1], [-1, -1, -1, -1]]
>>> multi_dimensional_list(-1, 4, 3, 2)  #3D list
[[[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]]]
>>> multi_dimensional_list(-1, 2, 3, 2, 2 )  #4D list
[[[[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]]], [[[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]]]]
6

Điều này để lại rất nhiều điều mong muốn. Chức năng sẽ giúp chúng ta trong trường hợp này là

>>> convert_single_to_multi(convert_multi_to_single([1,4,6,7],[23,45,32,14]),[23,45,32,14])
[1, 4, 6, 7]
>>> convert_multi_to_single(convert_single_to_multi(21343,[23,45,32,14]),[23,45,32,14])
21343
3, tạo ra một bề mặt bằng cách tìm thấy một bộ hình tam giác được hình thành giữa các điểm liền kề (hãy nhớ rằng X, Y và Z Đây là các mảng một chiều):

In [13]:

>>> multi_dimensional_list(-1, 3, 4)  #2D list
[[-1, -1, -1, -1], [-1, -1, -1, -1], [-1, -1, -1, -1]]
>>> multi_dimensional_list(-1, 4, 3, 2)  #3D list
[[[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]]]
>>> multi_dimensional_list(-1, 2, 3, 2, 2 )  #4D list
[[[[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]]], [[[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]]]]
7

Kết quả chắc chắn không sạch sẽ như khi nó được vẽ với một lưới, nhưng tính linh hoạt của một tam giác như vậy cho phép một số lô ba chiều thực sự thú vị. Ví dụ, thực sự có thể vẽ một dải Möbius ba chiều bằng cách sử dụng điều này, như chúng ta sẽ thấy tiếp theo.

Ví dụ: Hình dung một dải Möbius

Một dải Möbius tương tự như một dải giấy dán vào một vòng lặp với một nửa twist. Về mặt cấu trúc, nó khá thú vị bởi vì mặc dù xuất hiện nó chỉ có một mặt duy nhất! Ở đây chúng tôi sẽ trực quan hóa một đối tượng như vậy bằng cách sử dụng các công cụ ba chiều của Matplotlib. Chìa khóa để tạo dải Möbius là suy nghĩ về tham số hóa của nó: đó là một dải hai chiều, vì vậy chúng ta cần hai kích thước nội tại. Hãy gọi chúng là $ \ theta $, dao động từ $ 0 $ đến $ 2 \ pi $ xung quanh vòng lặp và $ w $ dao động từ -1 đến 1 trên chiều rộng của dải:

In [14]:

>>> multi_dimensional_list(-1, 3, 4)  #2D list
[[-1, -1, -1, -1], [-1, -1, -1, -1], [-1, -1, -1, -1]]
>>> multi_dimensional_list(-1, 4, 3, 2)  #3D list
[[[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]]]
>>> multi_dimensional_list(-1, 2, 3, 2, 2 )  #4D list
[[[[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]]], [[[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]]]]
8

Bây giờ từ tham số này, chúng ta phải xác định vị trí (x, y, z) của dải nhúng.

Suy nghĩ về nó, chúng ta có thể nhận ra rằng có hai vòng quay xảy ra: một là vị trí của vòng lặp về trung tâm của nó (cái mà chúng ta gọi là $ \ theta $), trong khi cái còn lại là sự xoắn của dải về trục của nó (chúng ta 'll gọi đây là $ \ Phi $). Đối với một dải Möbius, chúng ta phải có dải tạo ra một nửa trong vòng lặp đầy đủ hoặc $ \ Delta \ Phi = \ Delta \ theta/2 $.

Bây giờ chúng tôi sử dụng hồi ức về lượng giác để rút ra sự nhúng ba chiều. Chúng tôi sẽ xác định $ R $, khoảng cách của mỗi điểm từ trung tâm và sử dụng điều này để tìm tọa độ $ (x, y, z) $: tọa độ:

Trong & nbsp; [16]:

>>> multi_dimensional_list(-1, 3, 4)  #2D list
[[-1, -1, -1, -1], [-1, -1, -1, -1], [-1, -1, -1, -1]]
>>> multi_dimensional_list(-1, 4, 3, 2)  #3D list
[[[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]], [[-1, -1], [-1, -1], [-1, -1]]]
>>> multi_dimensional_list(-1, 2, 3, 2, 2 )  #4D list
[[[[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]]], [[[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]], [[-1, -1], [-1, -1]]]]
9

Cuối cùng, để vẽ biểu đồ đối tượng, chúng ta phải đảm bảo rằng tam giác là chính xác. Cách tốt nhất để làm điều này là xác định phép tam giác trong các tham số cơ bản, và sau đó để cho matplotlib dự án tam giác này vào không gian ba chiều của dải Möbius. Điều này có thể được thực hiện như sau:

In [17]:

def convert_single_to_multi(value, max_dim):
  dim_count = len(max_dim)
  values = [0]*dim_count
  for i in range(dim_count-1, -1, -1): #reverse iteration
    values[i] = value%max_dim[i]
    value /= max_dim[i]
  return values


def convert_multi_to_single(values, max_dim):
  dim_count = len(max_dim)
  value = 0
  length_of_dimension = 1
  for i in range(dim_count-1, -1, -1): #reverse iteration
    value += values[i]*length_of_dimension
    length_of_dimension *= max_dim[i]
  return value
0

Kết hợp tất cả các kỹ thuật này, có thể tạo và hiển thị một loạt các đối tượng và mẫu ba chiều trong matplotlib.

Làm thế nào để bạn vẽ một mảng numpy 3D trong Python?

Matplotlib với Python..

Tạo một hình mới hoặc kích hoạt một hình hiện tại bằng phương thức Hình () ..

Thêm một '~. trục. ....

Tạo một dữ liệu ngẫu nhiên có kích thước = (3, 3, 3) ..

Trích xuất dữ liệu X, Y và Z từ mảng 3D ..

Biểu đồ các điểm phân tán 3D trên trục được tạo ..

Để hiển thị hình, sử dụng phương thức show () ..

Bạn có thể vẽ mảng numpy không?

Trong Python, Matplotlib là một thư viện âm mưu. Chúng ta cũng có thể sử dụng nó cùng với Thư viện Python Numpy. Numpy là viết tắt của Python số và nó được sử dụng để làm việc với các mảng.matplotlib is a plotting library. We can use it along with the NumPy library of Python also. NumPy stands for Numerical Python and it is used for working with arrays.

Làm thế nào để bạn vẽ dữ liệu 3D trong Python?

Vẽ một điểm duy nhất trong không gian 3D..

Bước 1: Nhập thư viện. Nhập matplotlib.pyplot dưới dạng plt từ mpl_toolkits.mplot3d express3d. ....

Bước 2: Tạo hình và trục. fig = plt.figure (figsize = (4,4)) ax = fig.add_subplot (111, projection = '3d') ....

Bước 3: Vẽ đồ thị điểm ..

Làm thế nào để bạn tạo ra một mảng 3D trong Python?

Trong Python để khởi tạo một mảng 3 chiều, chúng ta có thể dễ dàng sử dụng chức năng NP.Array để tạo một mảng và một khi bạn sẽ in 'ARR1' thì đầu ra sẽ hiển thị mảng 3 chiều.use the np. array function for creating an array and once you will print the 'arr1' then the output will display a 3-dimensional array.