Hướng dẫn create table from array python - tạo bảng từ mảng python

Vì vậy, tôi đã chuyển đổi một CSV có tên trong một cột và giá trị trong cột thứ hai thành hai mảng, một mảng cho tên và một mảng cho các giá trị. Tôi muốn chuyển đổi nó thành một bảng đánh đồng hai, vì vậy mục đầu tiên trong mảng tên được liên kết với mục đầu tiên trong giá trị. Làm thế nào để tôi làm điều này?

import csv

data = csv.reader[open['C:\\Users\\Grant\\Documents\\finalproject\\centers.csv', 'r'], delimiter=",", quotechar='|']
names, values = [], []

for row in data:
    names.append[row[0]]
    values.append[row[1]]

Joe Iddon

Huy hiệu vàng 19,6K77 gold badges32 silver badges51 bronze badges

Đã hỏi ngày 2 tháng 12 năm 2017 lúc 20:01Dec 2, 2017 at 20:01

5

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]

Đã trả lời ngày 2 tháng 12 năm 2017 lúc 20:10Dec 2, 2017 at 20:10

Pahopahopaho

1.1229 huy hiệu bạc13 huy hiệu đồng9 silver badges13 bronze badges

2

Vì bạn nói

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

0, tôi sẽ đề nghị bạn đi với DataFrames bởi Pandas.

Giả sử danh sách tên của bạn là

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

1 và danh sách giá trị là
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

2,

Bạn có thể có một cái gì đó như:

data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]

Tất nhiên bạn phải

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

3 trước.

Điều này sẽ cung cấp cho bạn một "bảng" [hoặc dataFrame?] Giống như:

         names          values
0      Byakuya           500
1     Kenpachi           600
2          Kon           50

Đọc thêm ở đây.

Đã trả lời ngày 2 tháng 12 năm 2017 lúc 20:11Dec 2, 2017 at 20:11

Sayan Silsayan SilSayan Sil

5.3803 Huy hiệu vàng15 Huy hiệu bạc31 Huy hiệu đồng3 gold badges15 silver badges31 bronze badges

Có rất nhiều sự linh hoạt trong cách mà một bảng có thể được xây dựng ban đầu. Chi tiết về các đầu vào cho các hàm tạo

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4 và
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

5 nằm trong phần chi tiết khởi tạo. Tuy nhiên, cách tốt nhất để hiểu làm thế nào để làm một bảng là ví dụ.

Ví dụ;

Thành lập¶

Đối với các ví dụ sau, bạn cần nhập các lớp

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

5,
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4 và
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

8 cùng với gói đơn vị và số lượng [astropy.units] và gói
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

9:Units and Quantities [astropy.units] package and the
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

9 package:

>>> from astropy.table import QTable, Table, Column
>>> from astropy import units as u
>>> import numpy as np

Tạo từ đầu

Một

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4 có thể được tạo mà không cần bất kỳ dữ liệu đầu vào ban đầu nào hoặc thậm chí không có bất kỳ cột ban đầu nào. Điều này rất hữu ích cho việc xây dựng các bảng một cách linh hoạt nếu kích thước, cột hoặc dữ liệu ban đầu không được biết đến.

Ghi chú

Thêm các hàng yêu cầu tạo một bản sao mới của toàn bộ bảng mỗi lần, vì vậy trong trường hợp các bảng lớn, điều này có thể chậm. Mặt khác, thêm các cột là nhanh.

>>> t = Table[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0]
>>> t['c'] = ['x', 'y']

>>> t = Table[names=['a', 'b', 'c'], dtype=['f4', 'i4', 'S2']]
>>> t.add_row[[1, 2.0, 'x']]
>>> t.add_row[[4, 5.0, 'y']]

>>> t = Table[dtype=[['a', 'f4'], ['b', 'i4'], ['c', 'S2']]]

Nếu các cột dữ liệu của bạn có các đơn vị vật lý được liên kết với chúng thì chúng tôi khuyên bạn nên sử dụng lớp

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

5. Điều này sẽ cho phép cột được lưu trữ trong bảng dưới dạng
>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
  a      b     cint32 float64 str1----- ------- ----    1     2.0    x    4     5.0    y2 bản địa và mang toàn bộ sức mạnh của các đơn vị và số lượng [astropy.units] vào bảng. Xem số lượng và QTABLE để biết chi tiết.Units and Quantities [astropy.units] to the table. See
Quantity and QTable for details.

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

Danh sách các cột

Một trường hợp điển hình là nơi bạn có một số cột dữ liệu có cùng độ dài được xác định trong các biến khác nhau. Đây có thể là danh sách Python hoặc mảng

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

9 hoặc kết hợp cả hai. Chúng có thể được sử dụng để tạo
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4 bằng cách đặt các biến dữ liệu cột vào danh sách Python. Trong trường hợp này, các tên cột không được xác định bởi dữ liệu đầu vào, do đó chúng phải được đặt bằng từ khóa
>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y5 hoặc chúng sẽ được tạo tự động là
>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y6.

>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y

Tạo một bảng mới sử dụng các cột từ bảng đầu tiên

Khi bạn có

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4, thì bạn có thể tạo một bảng mới bằng cách chọn các cột và đặt chúng vào danh sách Python [ví dụ:
>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y8]:

>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 4

Tạo một bảng mới bằng cách sử dụng các biểu thức liên quan đến các cột

Đối tượng

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

8 có nguồn gốc từ tiêu chuẩn
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 40 và có thể được sử dụng trực tiếp trong các biểu thức số học. Điều này cho phép một cách nhỏ gọn để tạo một bảng mới với các giá trị cột được sửa đổi:

>>> Table[[t['a']**2, t['b'] + 10]]
a bint32 float64----- ------- 1 12.0 16 15.0

Các loại dữ liệu cột khác nhau

Phương thức đầu vào danh sách cho

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4 rất linh hoạt vì bạn có thể sử dụng hỗn hợp các loại dữ liệu khác nhau để khởi tạo bảng:

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
0

Lưu ý rằng trong cột thứ ba, tên cột hiện có

>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 42 được sử dụng.

Diễn ngôn của cột

Một

>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 43 của dữ liệu cột có thể được sử dụng để khởi tạo
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4:

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
1

Chỉ định thứ tự cột và tùy chọn các kiểu dữ liệu

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
2

Các loại dữ liệu cột khác nhau

Phương thức đầu vào danh sách cho

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4 rất linh hoạt vì bạn có thể sử dụng hỗn hợp các loại dữ liệu khác nhau để khởi tạo bảng:

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
3

Lưu ý rằng trong cột thứ ba, tên cột hiện có

>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 42 được sử dụng.

Diễn ngôn của cột

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
4

Một
>>> Table[[t['c'], t['a']]]

c astr1 int32---- ----- x 1 y 43 của dữ liệu cột có thể được sử dụng để khởi tạo
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4:

Chỉ định thứ tự cột và tùy chọn các kiểu dữ liệu

Dữ liệu cột đầu vào có thể là bất kỳ loại dữ liệu nào có thể khởi tạo đối tượng

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

8:

Lưu ý rằng khóa

>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 46 được ưu tiên hơn tên cột hiện có
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 42 trong cột thứ ba. Cũng thấy rằng cột
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 48 là một cột vector trong đó mỗi phần tử hàng là một mảng hai phần tử.

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
5

Đổi tên các cột là không thể

Dữ liệu hàng

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
6

Dữ liệu định hướng hàng có thể được sử dụng để tạo bảng bằng đối số từ khóa

>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 49.

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
7

Liệt kê hoặc tuple của hồ sơ dữ liệu

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
8

Nếu bạn có dữ liệu đầu vào định hướng hàng như danh sách các bản ghi, bạn cần sử dụng từ khóa

>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 49 để tạo bảng:

Danh sách các đối tượng Dict

Bạn cũng có thể khởi tạo một bảng với các giá trị hàng. Điều này được xây dựng như một danh sách các đối tượng

>>> Table[[t['c'], t['a']]]
c a str1 int32 ---- ----- x 1 y 4 3. Các phím xác định tên cột:

Nếu có các phím bị thiếu trong một hoặc nhiều hàng thì các giá trị tương ứng sẽ được đánh dấu là thiếu [mặt nạ]:

data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
0

Bạn có thể chỉ định thứ tự cột với đối số

>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y5:

Ghi chú

Thêm các hàng yêu cầu tạo một bản sao mới của toàn bộ bảng mỗi lần, vì vậy trong trường hợp các bảng lớn, điều này có thể chậm. Mặt khác, thêm các cột là nhanh.

Mảng có cấu trúc numpy

Mảng có cấu trúc là cơ chế tiêu chuẩn trong

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

9 để lưu trữ dữ liệu bảng không đồng nhất. Hầu hết các gói I/O khoa học đọc các tệp bảng [ví dụ:
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
04,
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
05 và Asciable] sẽ trả lại bảng trong một đối tượng dựa trên mảng có cấu trúc. Một mảng có cấu trúc có thể được tạo bằng cách sử dụng:

data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
1

Từ

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
06 có thể tạo đối tượng
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4 tương ứng:

data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
2

Lưu ý rằng trong ví dụ trên và hầu hết các ví dụ sau đây, chúng tôi đang tạo một bảng và ngay lập tức yêu cầu trình thông dịch Python tương tác in bảng để xem những gì chúng tôi đã làm. Trong mã thực, bạn có thể làm một cái gì đó như:

data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
3

Mảng có cấu trúc như một cột

Trong một số trường hợp, thuận tiện để bao gồm một mảng có cấu trúc như một cột duy nhất trong bảng. Lớp

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
08 là một trường hợp trong Astropy trong đó điều này được thực hiện, trong đó cột có cấu trúc có ba yếu tố
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
09,
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
10 và
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
11. Một ví dụ khác sẽ là một tham số mô hình có giá trị, giá trị được phép tối thiểu và giá trị được phép tối đa. Ở đây chúng tôi chứng minh bao gồm cả mảng có cấu trúc đơn giản được xác định trước đây là cột:

data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
4

Bạn có thể truy cập hoặc in một trường duy nhất trong cột có cấu trúc như sau:

data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
5

Tên cột mới

Các tên cột có thể được thay đổi từ các giá trị ban đầu bằng cách cung cấp đối số

>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y5:

data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
6

Các loại dữ liệu mới

Kiểu dữ liệu cho mỗi cột cũng có thể được thay đổi với

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
13:

data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
7

Mảng đồng nhất không có

Một mảng 1D

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

9 được coi là một bảng hàng duy nhất trong đó mỗi phần tử của mảng tương ứng với một cột:

data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
8

Một mảng 2D

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

9 [trong đó tất cả các phần tử có cùng loại] cũng có thể được chuyển đổi thành
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4. Trong trường hợp này, các tên cột không được người dùng chỉ định và phải được cung cấp bởi người dùng hoặc sẽ được tạo tự động dưới dạng
>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y6 trong đó
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
18 là số cột.

Ví dụ cơ bản với tên cột tự động

data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
9

Tên và loại cột được chỉ định

         names          values
0      Byakuya           500
1     Kenpachi           600
2          Kon           50
0

Tham khảo dữ liệu gốc

Có thể tham chiếu dữ liệu gốc miễn là các loại dữ liệu không được thay đổi:

         names          values
0      Byakuya           500
1     Kenpachi           600
2          Kon           50
1

Xem phần Bản sao so với tham chiếu để biết thêm thông tin.

Mảng python so với mảng numpy làm đầu vào

Có một vấn đề hơi tinh tế, rất quan trọng để hiểu về cách tạo ra các đối tượng

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4. Bất kỳ đầu vào dữ liệu nào trông giống như Python
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
20 [bao gồm cả
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
21] được coi là một danh sách các cột. Ngược lại, đầu vào
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 40 đồng nhất được hiểu là danh sách các hàng:

         names          values
0      Byakuya           500
1     Kenpachi           600
2          Kon           50
2

Sự phân đôi này là cần thiết để hỗ trợ đầu vào danh sách linh hoạt trong khi vẫn giữ được sự giải thích tự nhiên của các mảng 2D

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

9 trong đó chỉ mục đầu tiên tương ứng với dữ liệu của các hàng và chỉ số thứ hai tương ứng với các cột dữ liệu.

Từ một bảng hiện có

Một bảng mới có thể được tạo bằng cách chọn một tập hợp con của các cột trong một bảng hiện có:

         names          values
0      Byakuya           500
1     Kenpachi           600
2          Kon           50
3

Một cách khác là sử dụng thuộc tính

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
24 [được giải thích trong phần bảng tính] để khởi tạo một bảng mới. Điều này cho phép bạn chọn các cột theo chỉ mục số hoặc tên của họ và hỗ trợ cú pháp cắt:

         names          values
0      Byakuya           500
1     Kenpachi           600
2          Kon           50
4

Để tạo một bản sao của một bảng hiện có trống [không có hàng]:

         names          values
0      Byakuya           500
1     Kenpachi           600
2          Kon           50
5

Mảng trống có kích thước đã biết

Nếu bạn biết kích thước mà bảng của bạn sẽ là, nhưng không biết trước các giá trị, bạn có thể tạo

>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 40 không và xây dựng
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4 từ nó:

         names          values
0      Byakuya           500
1     Kenpachi           600
2          Kon           50
6

Ví dụ: sau đó bạn có thể điền vào hàng bảng này theo từng hàng với các giá trị được trích xuất từ ​​một bảng khác hoặc được tạo khi đang bay:

         names          values
0      Byakuya           500
1     Kenpachi           600
2          Kon           50
7

Chi tiết khởi tạo Jo

Một đối tượng bảng được tạo bằng cách khởi tạo đối tượng lớp

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4 với các đối số sau, tất cả đều là tùy chọn:

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
00
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 40,
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 43,
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
20,
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4 hoặc đối tượng giống như bảng, tùy chọn
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 40,
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 43,
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
20,
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4, or table-like object, optional

Dữ liệu để khởi tạo bảng.

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
33
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
34, tùy chọn
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
34, optional

Chỉ định xem bảng có bị che dấu không.

>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y5
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
20, tùy chọn
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
20, optional

Chỉ định tên cột.

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
13
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
20, tùy chọn
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
20, optional

Chỉ định các loại dữ liệu cột.

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
39
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 43, tùy chọn
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 43, optional

Siêu dữ liệu liên quan đến bảng.

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
41
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
34, tùy chọn
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
34, optional

Sao chép dữ liệu đầu vào. Nếu đầu vào là

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4,
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
39 luôn được sao chép bất kể tham số
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
41. Mặc định là
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
46.

>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 49
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 40,
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
20 của Danh sách, Tùy chọn
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 40,
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
20 of lists, optional

Dữ liệu định hướng hàng cho bảng thay vì đối số

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
00.

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
51
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
34, tùy chọn
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
34, optional

Sao chép bất kỳ chỉ số nào trong dữ liệu đầu vào. Mặc định là

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
46.

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
54
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
20,
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 43, tùy chọn
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
20,
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 43, optional

Liệt kê hoặc độc lực của các đơn vị để áp dụng cho các cột.

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
57
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
20,
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 43, tùy chọn
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
20,
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 43, optional

Liệt kê hoặc bắt buộc các mô tả để áp dụng cho các cột.

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
60
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 43, tùy chọn
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 43, optional

Từ khóa bổ sung Args khi chuyển đổi đối tượng giống như bảng.

Các tiểu mục sau đây cung cấp thêm chi tiết về các giá trị và tùy chọn cho từng đối số từ khóa có thể được sử dụng để tạo một đối tượng

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4 mới.

dữ liệu¶

Đối tượng

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4 có thể được khởi tạo với một số hình thức khác nhau cho đối số
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
00.

Numpy Ndarray [mảng có cấu trúc]

Tên cột cơ sở là tên trường của mảng có cấu trúc

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
00. Danh sách
>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y5 [tùy chọn] có thể được sử dụng để chọn các trường cụ thể và/hoặc sắp xếp lại các tên cơ sở. Danh sách
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
13 [tùy chọn] phải khớp với độ dài của
>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y5 và được sử dụng để ghi đè các loại
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
00 hiện có.

Numpy Ndarray [đồng nhất]

Nếu

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
00 là
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 40 một chiều thì nó được coi là một bảng hàng duy nhất trong đó mỗi phần tử của mảng tương ứng với một cột.

Nếu

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
00 là
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 40 ít nhất hai chiều, thì chỉ số thứ nhất [nhất bên trái] tương ứng với số hàng [chiều dài bảng] và chỉ số thứ hai tương ứng với số cột [chiều rộng bảng]. Kích thước cao hơn được hấp thụ trong hình dạng của mỗi ô bảng.

Nếu được cung cấp, danh sách

>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y5 phải phù hợp với chiều rộng của nhóm của đối số
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
00. Mặc định cho
>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y5 là tự động tạo tên cột trong mẫu
>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y6. Nếu được cung cấp, danh sách
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
13 ghi đè các loại cột cơ sở và phải khớp với độ dài của
>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y5.

dict-like

Các khóa của đối tượng

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
00 xác định tên cột cơ sở. Các giá trị tương ứng có thể là các đối tượng
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

8, mảng
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

9 hoặc các đối tượng giống như danh sách. Danh sách
>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y5 [tùy chọn] có thể được sử dụng để chọn các trường cụ thể và/hoặc sắp xếp lại các tên cơ sở. Danh sách
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
13 [tùy chọn] phải khớp với độ dài của
>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y5 và được sử dụng để ghi đè các loại dữ liệu hiện có hoặc mặc định.

list-like

Mỗi mục trong danh sách

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
00 cung cấp một cột các giá trị dữ liệu và có thể là đối tượng
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

8,
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 40 hoặc đối tượng giống như danh sách. Danh sách
>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y5 xác định tên của mỗi cột. Các tên sẽ được tạo tự động nếu không được cung cấp [với đối số
>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y5 hoặc bởi các đối tượng
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

8]. Nếu được cung cấp, đối số
>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y5 phải khớp với số lượng mục trong danh sách
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
00. Danh sách
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
13 tùy chọn sẽ ghi đè các loại dữ liệu hiện có hoặc mặc định và phải khớp với độ dài
>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y5.

list-of-dicts

Tương tự như Python, tích hợp

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
96, mỗi mục trong danh sách
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
00 cung cấp một hàng giá trị dữ liệu và phải là
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 43. Các giá trị khóa trong mỗi
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 43 xác định tên cột. Đối số
>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y5 có thể được cung cấp để chỉ định đặt hàng cột. Nếu
>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y5 không được cung cấp thì đặt hàng cột sẽ được xác định bởi
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 43 đầu tiên nếu nó chứa các giá trị cho tất cả các cột hoặc bằng cách sắp xếp các tên cột theo thứ tự bảng chữ cái nếu không. Danh sách
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
13 có thể được chỉ định và phải tương ứng với thứ tự của các cột đầu ra.

Đối tượng giống như bảng

Nếu một đối tượng giống như bảng khác có phương thức

data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
04 thì đối tượng đó có thể được sử dụng để trực tiếp tạo
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4. Xem phần đối tượng giống như bảng để biết chi tiết.

Không có

Khởi tạo một bảng có độ dài bằng không. Nếu

>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y5 và tùy chọn
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
13 được cung cấp, thì các cột tương ứng được tạo.

tên

Đối số

>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y5 cung cấp một cách để chỉ định tên cột bảng hoặc ghi đè lên các tên hiện có. Theo mặc định, các tên cột được lấy từ các tên hiện có [cho đầu vào
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 40 hoặc
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4] hoặc tự động tạo là
>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y6. Nếu
>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y5 được cung cấp, thì nó phải là một danh sách có cùng độ dài với số lượng cột. Bất kỳ yếu tố danh sách nào có giá trị
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
13 rơi trở lại tên mặc định.

Trong trường hợp

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
00 được cung cấp dưới dạng
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 43 của các cột, đối số
>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y5 có thể được cung cấp để chỉ định thứ tự của các cột. Danh sách
>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y5 sau đó phải chứa từng khóa trong
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
00
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 43.

DTYPE¶

Đối số

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
13 cung cấp một cách để chỉ định các loại dữ liệu cột bảng hoặc ghi đè các loại hiện có. Theo mặc định, các loại được lấy từ các loại hiện có [cho đầu vào
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 40 hoặc
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4] hoặc tự động tạo bởi thói quen
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
23. Nếu
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
13 được cung cấp thì nó phải là một danh sách có cùng độ dài với số lượng cột. Các giá trị phải hợp lệ
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
25 khởi tạo hoặc
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
13. Bất kỳ yếu tố danh sách nào có giá trị
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
13 rơi trở lại loại mặc định.

bản sao;

Trong trường hợp

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
00 là đối tượng
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 40,
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 43 hoặc
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4 hiện có, có thể sử dụng tham chiếu đến dữ liệu hiện có bằng cách đặt
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
32. Điều này có lợi thế là giảm sử dụng bộ nhớ và nhanh hơn. Tuy nhiên, bạn nên cẩn thận vì mọi sửa đổi đối với dữ liệu
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4 mới cũng sẽ được nhìn thấy trong dữ liệu đầu vào ban đầu. Xem phần Bản sao so với tham chiếu để biết thêm thông tin.

hàng

Đối số này cho phép cung cấp dữ liệu như một chuỗi các hàng, trái ngược với từ khóa

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
00, thường giả định dữ liệu là một chuỗi các cột. Phần dữ liệu hàng cung cấp chi tiết.

Copy_Indices¶

Nếu bạn đang khởi tạo

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4 từ một
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4 khác sử dụng lập chỉ mục bảng, thì tùy chọn này cho phép sao chép bảng đó mà không sao chép các chỉ số bằng cách đặt
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
37. Theo mặc định, các chỉ số được sao chép.Table Indexing, then this option allows copying that table without copying the indices by setting
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
37. By default, the indices are copied.

các đơn vị¶

Điều này cho phép đặt thiết bị cho một hoặc nhiều cột tại thời điểm tạo bảng. Đầu vào có thể là danh sách các giá trị đơn vị tương ứng với từng cột trong bảng [sử dụng

data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
13 hoặc
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
39 không có đơn vị] hoặc
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 43 cung cấp đơn vị cho tên cột được chỉ định. Ví dụ:

         names          values
0      Byakuya           500
1     Kenpachi           600
2          Kon           50
8

Xem số lượng và QTable cho lý do tại sao chúng tôi sử dụng

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

5 ở đây thay vì
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4.Quantity and QTable for why we used a
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

5 here instead of a
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4.

mô tả và

Điều này cho phép thiết lập mô tả cho một hoặc nhiều cột tại thời điểm tạo bảng. Đầu vào có thể là danh sách các giá trị mô tả tương ứng với từng cột trong bảng [sử dụng

data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
13 không có mô tả] hoặc
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 43 cung cấp mô tả cho tên cột được chỉ định. Điều này hoạt động theo cách tương tự như ví dụ
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
54 ở trên.

Sao chép Versus Reference¶

Thông thường khi một đối tượng

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4 mới được tạo, dữ liệu đầu vào được sao chép. Điều này đảm bảo rằng nếu các yếu tố bảng mới được sửa đổi thì dữ liệu gốc sẽ không bị ảnh hưởng. Tuy nhiên, khi tạo bảng từ
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4 hiện có, đối tượng
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 40 [có cấu trúc hoặc đồng nhất] hoặc
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 43, có thể vô hiệu hóa sao chép để sử dụng tham chiếu bộ nhớ đến dữ liệu gốc. Điều này có lợi thế là nhanh hơn và sử dụng ít bộ nhớ hơn. Tuy nhiên, phải thận trọng vì dữ liệu bảng mới và dữ liệu gốc sẽ được liên kết, như được hiển thị bên dưới:

         names          values
0      Byakuya           500
1     Kenpachi           600
2          Kon           50
9

Lưu ý rằng khi tham chiếu dữ liệu, không thể thay đổi các loại dữ liệu vì thao tác đó yêu cầu tạo một bản sao của dữ liệu. Trong trường hợp này xảy ra lỗi:

>>> from astropy.table import QTable, Table, Column
>>> from astropy import units as u
>>> import numpy as np
0

Một cảnh báo khác để sử dụng dữ liệu được tham chiếu là nếu bạn thêm một hàng mới vào bảng, tham chiếu đến mảng dữ liệu gốc sẽ bị mất và thay vào đó, bảng sẽ giữ một bản sao của các giá trị gốc [ngoài hàng mới].

Các lớp học và bảng tính bảng tính

Có hai lớp,

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

8 và
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
51, rất hữu ích khi xây dựng các bảng mới.

Cột¶

Đối tượng

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

8 có thể được tạo như sau, trong đó trong mọi trường hợp, cột
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
53 nên được cung cấp dưới dạng đối số từ khóa và bạn có thể tùy chọn cung cấp các giá trị sau:

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
00
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
20,
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 40 hoặc
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
13
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
20,
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 40 or
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
13

Giá trị dữ liệu cột.

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
13
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
25 Giá trị tương thích
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
25 compatible value

Kiểu dữ liệu cho cột.

data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
60
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
61
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
61

Mô tả đầy đủ của cột.

data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
62
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
61
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
61

Đơn vị vật lý.

data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
64
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
61 hoặc chức năng
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
61 or function

Định dạng xác định cho các giá trị cột xuất ra.

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
39
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 43
>>> Table[[t['c'], t['a']]]
c astr1 int32---- ----- x 1 y 43

Siêu dữ liệu liên quan đến cột.

Tùy chọn khởi tạo

Các giá trị dữ liệu cột, hình dạng và kiểu dữ liệu được chỉ định theo một trong hai cách:

Cung cấp dữ liệu nhưng không có độ dài hoặc hình dạng

Examples:

>>> from astropy.table import QTable, Table, Column
>>> from astropy import units as u
>>> import numpy as np
1

Đối số

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
13 có thể là bất kỳ giá trị nào là trình khởi tạo loại dữ liệu có kích thước cố định được chấp nhận cho
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
25. Xem tham chiếu cho các đối tượng kiểu dữ liệu. Những ví dụ bao gồm:

  • Loại không chuỗi Python [

    data = {'names': names, 'values': values}
    df = pandas.DataFrame[data=data]
    
    70,
    data = {'names': names, 'values': values}
    df = pandas.DataFrame[data=data]
    
    71,
    names = ["a", "b", "c"]
    values = [1, 2, 3]
    for n, v in zip[names, values]:
        print["{} = {}".format[n, v]]
    
    34].

  • >>> t = QTable[]
    >>> t['a'] = [1, 4]
    >>> t['b'] = [2.0, 5.0] * u.cm / u.s
    >>> t['c'] = ['x', 'y']
    >>> type[t['b']]
    
    
    9 loại không chuỗi [ví dụ:
    data = {'names': names, 'values': values}
    df = pandas.DataFrame[data=data]
    
    74,
    data = {'names': names, 'values': values}
    df = pandas.DataFrame[data=data]
    
    75].

  • data = {'names': names, 'values': values}
    df = pandas.DataFrame[data=data]
    
    25 chuỗi loại giao thức mảng [ví dụ:
    data = {'names': names, 'values': values}
    df = pandas.DataFrame[data=data]
    
    77,
    data = {'names': names, 'values': values}
    df = pandas.DataFrame[data=data]
    
    78,
    data = {'names': names, 'values': values}
    df = pandas.DataFrame[data=data]
    
    79].

Nếu không có giá trị

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
13 được cung cấp, thì loại được suy ra bằng cách sử dụng
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
23. Khi
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
00 được cung cấp thì các đối số
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
83 và
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
84 bị bỏ qua.

Cung cấp độ dài và hình dạng tùy chọn, nhưng không phải dữ liệu

Examples:

>>> from astropy.table import QTable, Table, Column
>>> from astropy import units as u
>>> import numpy as np
2

Mặc định

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
13 là
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
86. Đối số
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
83 là hình dạng mảng của một ô trong cột. Mặc định
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
83 là
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
89 có nghĩa là một giá trị duy nhất trong mỗi phần tử.

Ghi chú

Sau khi đặt loại cho một cột, loại đó không thể thay đổi. Nếu các giá trị dữ liệu của một loại khác nhau được gán cho cột thì chúng sẽ được chuyển vào loại cột hiện có.

Định dạng xác định

Trình xác định định dạng điều khiển đầu ra của các giá trị cột khi bảng hoặc cột được in hoặc ghi vào bảng ASCII. Trong trường hợp đơn giản nhất, nó là một chuỗi có thể được chuyển đến chức năng

data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
90 tích hợp của Python. Đối với định dạng phức tạp hơn, người ta cũng có thể cung cấp cho các chuỗi định dạng kiểu cũ hoặc phong cách mới, hoặc thậm chí là một chức năng:

Đặc điểm kỹ thuật định dạng đơn giản

Loại chuỗi này chỉ định trực tiếp cách giá trị nên được định dạng bằng cách sử dụng ngôn ngữ nhỏ đặc tả định dạng khá giống với C.

data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
91 sẽ cho bốn chữ số sau thập phân ở định dạng float, hoặc

data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
92 sẽ cung cấp số nguyên trong các lĩnh vực sáu ký tự.

Chuỗi định dạng kiểu cũ

Điều này tương ứng với cú pháp như

data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
93 như được ghi lại trong định dạng chuỗi kiểu printf.

data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
94 để in bốn chữ số sau thập phân ở định dạng float, hoặc

data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
95 để in một số nguyên trong trường rộng sáu ký tự.

Chuỗi định dạng kiểu mới

Điều này tương ứng với cú pháp như

data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
96 như được ghi lại trong cú pháp chuỗi định dạng.

data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
97 để in bốn chữ số sau thập phân ở định dạng float, hoặc

data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
98 để in một số nguyên trong trường rộng sáu ký tự.

Lưu ý rằng trong một trong hai trường hợp chuỗi định dạng, bất kỳ chuỗi python nào định dạng chính xác một giá trị là hợp lệ, do đó

data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
99 hoặc
         names          values
0      Byakuya           500
1     Kenpachi           600
2          Kon           50
00 sẽ hoạt động.

Hàm số

Tính linh hoạt lớn nhất có thể đạt được bằng cách đặt hàm định dạng. Hàm này phải chấp nhận một đối số duy nhất [giá trị] và trả về một chuỗi. Một cảnh báo là một hàm định dạng như vậy không thể được lưu vào tệp và bạn sẽ có một ngoại lệ nếu bạn cố gắng làm như vậy. Trong ví dụ sau đây, điều này được sử dụng để tạo ra đầu ra sẵn sàng latex:

>>> from astropy.table import QTable, Table, Column
>>> from astropy import units as u
>>> import numpy as np
3

Chuỗi định dạng cho cột mảng có cấu trúc

Đối với các cột là các mảng có cấu trúc, chuỗi định dạng phải là một chuỗi sử dụng các chuỗi định dạng kiểu mới với các thay thế tham số tương ứng với tên trường trong mảng có cấu trúc. Xem các cột mảng có cấu trúc cho một ví dụ.Structured array columns for an example.

TableColonns¶

Mỗi đối tượng

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4 có một thuộc tính
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
24 là một từ điển được đặt hàng lưu trữ tất cả các đối tượng
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

8 trong bảng [xem thêm phần Cột]. Về mặt kỹ thuật, thuộc tính
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
24 là một đối tượng
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
51, đây là một từ điển được đặt hàng nâng cao cung cấp các cách dễ dàng hơn để chọn nhiều cột. Có một vài điểm chính cần nhớ:

  • A

    >>> t = QTable[]
    >>> t['a'] = [1, 4]
    >>> t['b'] = [2.0, 5.0] * u.cm / u.s
    >>> t['c'] = ['x', 'y']
    >>> type[t['b']]
    
    
    4 có thể được khởi tạo từ đối tượng
    data = {'names': names, 'values': values}
    df = pandas.DataFrame[data=data]
    
    51 [
    names = ["a", "b", "c"]
    values = [1, 2, 3]
    for n, v in zip[names, values]:
        print["{} = {}".format[n, v]]
    
    41 luôn là
    names = ["a", "b", "c"]
    values = [1, 2, 3]
    for n, v in zip[names, values]:
        print["{} = {}".format[n, v]]
    
    46].

  • Chọn nhiều cột từ đối tượng

    data = {'names': names, 'values': values}
    df = pandas.DataFrame[data=data]
    
    51 trả về một đối tượng
    data = {'names': names, 'values': values}
    df = pandas.DataFrame[data=data]
    
    51 khác.

  • Chọn một cột từ đối tượng

    data = {'names': names, 'values': values}
    df = pandas.DataFrame[data=data]
    
    51 trả về
    >>> t = QTable[]
    >>> t['a'] = [1, 4]
    >>> t['b'] = [2.0, 5.0] * u.cm / u.s
    >>> t['c'] = ['x', 'y']
    >>> type[t['b']]
    
    
    8.

Có một vài cách khác nhau để chọn các cột từ đối tượng

data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
51:

Chọn các cột theo tên

>>> from astropy.table import QTable, Table, Column
>>> from astropy import units as u
>>> import numpy as np
4

Chọn các cột bằng cách cắt chỉ mục

>>> from astropy.table import QTable, Table, Column
>>> from astropy import units as u
>>> import numpy as np
5

Chọn các cột đơn theo chỉ mục hoặc tên

>>> from astropy.table import QTable, Table, Column
>>> from astropy import units as u
>>> import numpy as np
6

Bảng phân lớp

Đối với một số ứng dụng, có thể hữu ích khi phân lớp lớp

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4 để giới thiệu hành vi chuyên môn. Ở đây chúng tôi giải quyết hai trường hợp sử dụng cụ thể để phân lớp: Thêm thuộc tính bảng tùy chỉnh và thay đổi hành vi của các đối tượng lớp bên trong.

Thêm các thuộc tính bảng tùy chỉnh

Một tùy chỉnh đơn giản có thể hữu ích là thêm các thuộc tính mới vào đối tượng bảng. Không có gì ngăn chặn việc thiết lập một thuộc tính trên một đối tượng bảng hiện có, ví dụ

         names          values
0      Byakuya           500
1     Kenpachi           600
2          Kon           50
16. Tuy nhiên, thuộc tính này sẽ là phù du vì nó sẽ bị mất nếu bảng được cắt, sao chép hoặc ngâm. Thay vào đó, bạn có thể thêm các thuộc tính liên tục như trong ví dụ này:

>>> from astropy.table import QTable, Table, Column
>>> from astropy import units as u
>>> import numpy as np
7

Một số điểm chính:

  • Một thuộc tính tùy chỉnh có thể được đặt khi bảng được tạo hoặc sử dụng cú pháp thông thường để đặt thuộc tính đối tượng.

  • Một thuộc tính tùy chỉnh luôn có giá trị mặc định, được đặt rõ ràng trong định nghĩa lớp hoặc

    data = {'names': names, 'values': values}
    df = pandas.DataFrame[data=data]
    
    13.

  • Các giá trị thuộc tính được lưu trữ trong bảng

    names = ["a", "b", "c"]
    values = [1, 2, 3]
    for n, v in zip[names, values]:
        print["{} = {}".format[n, v]]
    
    39 Từ điển. Đây là cơ chế mà chúng kiên trì thông qua bản sao, lát cắt và tuần tự hóa như ngâm hoặc ghi vào tệp định dạng ECSV.ECSV Format file.

Thay đổi hành vi của các đối tượng lớp nội bộ

Cũng có thể thay đổi hành vi của các đối tượng lớp bên trong được chứa hoặc tạo bởi

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4. Điều này bao gồm các hàng, cột, định dạng và thùng chứa cột. Để làm điều này, lớp con cần phải khai báo loại nào [nếu nó khác với phiên bản tích hợp]. Điều này được thực hiện bằng cách chỉ định một hoặc nhiều thuộc tính lớp
>>> Table[[t['a']**2, t['b'] + 10]]
a bint32 float64----- ------- 1 12.0 16 15.05,
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

8,
         names          values
0      Byakuya           500
1     Kenpachi           600
2          Kon           50
22,
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
51 hoặc
         names          values
0      Byakuya           500
1     Kenpachi           600
2          Kon           50
24.

Ví dụ tầm thường sau đây ghi đè tất cả những điều này với các lớp con không có gì, nhưng trong thực tế, bạn sẽ chỉ ghi đè lên các thành phần cần thiết:

>>> from astropy.table import QTable, Table, Column
>>> from astropy import units as u
>>> import numpy as np
8

Thí dụ¶

Như một ví dụ thực tế hơn, giả sử bạn có một bảng dữ liệu với một tập hợp các cột cố định nhất định, nhưng bạn cũng muốn mang theo một từ điển tùy ý cho mỗi hàng và sau đó truy cập các giá trị đó bằng cách sử dụng cùng một cú pháp truy cập mục như thể chúng là cột. Ở đây, ở đây rằng các tham số bổ sung được chứa trong cột

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

9-DType có tên
         names          values
0      Byakuya           500
1     Kenpachi           600
2          Kon           50
26:

>>> from astropy.table import QTable, Table, Column
>>> from astropy import units as u
>>> import numpy as np
9

Bây giờ chúng tôi đưa điều này vào hành động với một lớp con

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4 tầm thường:

>>> t = Table[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0]
>>> t['c'] = ['x', 'y']

>>> t = Table[names=['a', 'b', 'c'], dtype=['f4', 'i4', 'S2']]
>>> t.add_row[[1, 2.0, 'x']]
>>> t.add_row[[4, 5.0, 'y']]

>>> t = Table[dtype=[['a', 'f4'], ['b', 'i4'], ['c', 'S2']]]
0

Đầu tiên hãy tạo một bảng và thêm một vài hàng:

>>> t = Table[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0]
>>> t['c'] = ['x', 'y']

>>> t = Table[names=['a', 'b', 'c'], dtype=['f4', 'i4', 'S2']]
>>> t.add_row[[1, 2.0, 'x']]
>>> t.add_row[[4, 5.0, 'y']]

>>> t = Table[dtype=[['a', 'f4'], ['b', 'i4'], ['c', 'S2']]]
1

Bây giờ hãy xem những gì chúng tôi có từ đối tượng

         names          values
0      Byakuya           500
1     Kenpachi           600
2          Kon           50
28 chuyên dụng của chúng tôi:

>>> t = Table[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0]
>>> t['c'] = ['x', 'y']

>>> t = Table[names=['a', 'b', 'c'], dtype=['f4', 'i4', 'S2']]
>>> t.add_row[[1, 2.0, 'x']]
>>> t.add_row[[4, 5.0, 'y']]

>>> t = Table[dtype=[['a', 'f4'], ['b', 'i4'], ['c', 'S2']]]
2

Để làm cho ví dụ này thực sự hữu ích, bạn có thể muốn ghi đè

         names          values
0      Byakuya           500
1     Kenpachi           600
2          Kon           50
29 để cho phép truy cập cấp bảng vào các trường tham số. Điều này có thể trông giống như:

>>> t = Table[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0]
>>> t['c'] = ['x', 'y']

>>> t = Table[names=['a', 'b', 'c'], dtype=['f4', 'i4', 'S2']]
>>> t.add_row[[1, 2.0, 'x']]
>>> t.add_row[[4, 5.0, 'y']]

>>> t = Table[dtype=[['a', 'f4'], ['b', 'i4'], ['c', 'S2']]]
3

Cột và số lượng

         names          values
0      Byakuya           500
1     Kenpachi           600
2          Kon           50
30
>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y2 Các đối tượng có thể được xử lý trong các bảng theo hai cách bổ sung. Phương pháp đầu tiên lưu trữ đối tượng
>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y2 trong bảng thông qua giao thức cột Mix Mixin. Xem các phần trên các cột mixin và số lượng và qtable để biết chi tiết, nhưng tóm lại, sự khác biệt chính là sử dụng lớp
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

5 để chỉ ra rằng
>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y2 nên được lưu trữ tự nhiên trong bảng:Mixin Columns and Quantity and QTable for details, but in brief, the key difference is using the
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

5 class to indicate that a
>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y2 should be stored natively within the table:

>>> t = Table[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0]
>>> t['c'] = ['x', 'y']

>>> t = Table[names=['a', 'b', 'c'], dtype=['f4', 'i4', 'S2']]
>>> t.add_row[[1, 2.0, 'x']]
>>> t.add_row[[4, 5.0, 'y']]

>>> t = Table[dtype=[['a', 'f4'], ['b', 'i4'], ['c', 'S2']]]
4

Đối với mã mới nhận biết số lượng, chúng tôi khuyên bạn nên sử dụng

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

5, nhưng điều này có thể không thể thực hiện được trong mọi tình huống [đặc biệt là khi giao tiếp với mã di sản không xử lý số lượng] và có chi tiết và cảnh báo. Trong trường hợp này, hãy sử dụng lớp
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4, sẽ chuyển đổi
>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y2 thành đối tượng
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

8 bằng thuộc tính
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
62:Details and Caveats that apply. In this case, use the
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4 class, which will convert a
>>> a = np.array[[1, 4], dtype=np.int32]
>>> b = [2.0, 5.0]
>>> c = ['x', 'y']
>>> t = Table[[a, b, c], names=['a', 'b', 'c']]
>>> t
a b cint32 float64 str1----- ------- ---- 1 2.0 x 4 5.0 y2 to a
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

8 object with a
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
62 attribute:

>>> t = Table[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0]
>>> t['c'] = ['x', 'y']

>>> t = Table[names=['a', 'b', 'c'], dtype=['f4', 'i4', 'S2']]
>>> t.add_row[[1, 2.0, 'x']]
>>> t.add_row[[4, 5.0, 'y']]

>>> t = Table[dtype=[['a', 'f4'], ['b', 'i4'], ['c', 'S2']]]
5

Để tìm hiểu thêm về việc sử dụng các đối tượng

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

8 tiêu chuẩn với các đơn vị được xác định, hãy xem các cột với phần Đơn vị.Columns with Units section.

Đối tượng giống như bảng

Để cải thiện khả năng tương tác giữa các lớp bảng khác nhau, đối tượng

         names          values
0      Byakuya           500
1     Kenpachi           600
2          Kon           50
30
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4 có thể được tạo trực tiếp từ bất kỳ đối tượng giống như bảng nào khác cung cấp phương thức
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
04. Trong trường hợp này, phương pháp
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
04 sẽ được gọi như sau:

>>> t = Table[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0]
>>> t['c'] = ['x', 'y']

>>> t = Table[names=['a', 'b', 'c'], dtype=['f4', 'i4', 'S2']]
>>> t.add_row[[1, 2.0, 'x']]
>>> t.add_row[[4, 5.0, 'y']]

>>> t = Table[dtype=[['a', 'f4'], ['b', 'i4'], ['c', 'S2']]]
6

Bên trong cuộc gọi sau đây sẽ được thực hiện để yêu cầu đối tượng

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
00 trả về một đại diện của chính nó dưới dạng
         names          values
0      Byakuya           500
1     Kenpachi           600
2          Kon           50
30
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4, tôn trọng ưu tiên của
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
41 của cuộc gọi ban đầu đến
         names          values
0      Byakuya           500
1     Kenpachi           600
2          Kon           50
49:

>>> t = Table[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0]
>>> t['c'] = ['x', 'y']

>>> t = Table[names=['a', 'b', 'c'], dtype=['f4', 'i4', 'S2']]
>>> t.add_row[[1, 2.0, 'x']]
>>> t.add_row[[4, 5.0, 'y']]

>>> t = Table[dtype=[['a', 'f4'], ['b', 'i4'], ['c', 'S2']]]
7

Ở đây

         names          values
0      Byakuya           500
1     Kenpachi           600
2          Kon           50
50 là lớp
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4 hoặc lớp con đang được khởi tạo [
>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

5 trong ví dụ này],
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
41 cho biết liệu một bản sao của các giá trị trong
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
00 có nên được cung cấp hay không và
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
60 là bất kỳ đối số từ khóa nào không hợp lệ. Trong ví dụ trên,
         names          values
0      Byakuya           500
1     Kenpachi           600
2          Kon           50
58 sẽ kết thúc vào
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
60 và được chuyển sang
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
04.

Nếu

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
41 là
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
46 thì phương thức
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
04 phải đảm bảo rằng một bản sao của dữ liệu gốc được trả về. Nếu
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
41 là
         names          values
0      Byakuya           500
1     Kenpachi           600
2          Kon           50
65 thì nên trả về dữ liệu bảng nếu có thể. Nếu không thể [ví dụ: dữ liệu gốc nằm trong danh sách Python hoặc phải được chuyển đổi trong bộ nhớ] thì phương thức
data = {'names': names, 'values': values}
df = pandas.DataFrame[data=data]
04 được tự do trả lại một bản sao hoặc nếu không sẽ tăng ngoại lệ. Sự lựa chọn này phụ thuộc vào sở thích của việc thực hiện. Việc triển khai có thể chọn cho phép một đối số từ khóa bổ sung [ví dụ:
         names          values
0      Byakuya           500
1     Kenpachi           600
2          Kon           50
67 được truyền qua
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
60] để kiểm soát hành vi trong trường hợp này.

Như một ví dụ ngắn gọn, hãy tưởng tượng một lớp bảng dựa trên dict. [Lưu ý rằng

>>> t = QTable[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0] * u.cm / u.s
>>> t['c'] = ['x', 'y']
>>> type[t['b']]

4 đã có thể được khởi tạo từ một đối tượng giống như dict

>>> t = Table[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0]
>>> t['c'] = ['x', 'y']

>>> t = Table[names=['a', 'b', 'c'], dtype=['f4', 'i4', 'S2']]
>>> t.add_row[[1, 2.0, 'x']]
>>> t.add_row[[4, 5.0, 'y']]

>>> t = Table[dtype=[['a', 'f4'], ['b', 'i4'], ['c', 'S2']]]
8

Việc thực hiện lớp của bạn về điều này phải sử dụng kỹ thuật

names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
60 để bắt các đối số từ khóa ở cuối. Điều này là để đảm bảo khả năng tương thích trong tương lai trong trường hợp các từ khóa bổ sung được thêm vào cuộc gọi
         names          values
0      Byakuya           500
1     Kenpachi           600
2          Kon           50
71 nội bộ. Bao gồm
names = ["a", "b", "c"]
values = [1, 2, 3]
for n, v in zip[names, values]:
    print["{} = {}".format[n, v]]
60 sẽ ngăn ngừa vỡ trong trường hợp này.

>>> t = Table[]
>>> t['a'] = [1, 4]
>>> t['b'] = [2.0, 5.0]
>>> t['c'] = ['x', 'y']

>>> t = Table[names=['a', 'b', 'c'], dtype=['f4', 'i4', 'S2']]
>>> t.add_row[[1, 2.0, 'x']]
>>> t.add_row[[4, 5.0, 'y']]

>>> t = Table[dtype=[['a', 'f4'], ['b', 'i4'], ['c', 'S2']]]
9

Bài Viết Liên Quan

Chủ Đề