Trong Python, bạn có thể sử dụng thư viện
1 khi làm việc với các mảng và các khái niệm toán học nhất định như ma trận và đại số tuyến tính.import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = vector[y]
print[x]
# [2, 4, 6, 8]
Nhưng giống như mọi khía cạnh khác của việc học và làm việc với ngôn ngữ lập trình, các lỗi là không thể tránh khỏi.
Trong bài viết này, bạn sẽ tìm hiểu cách sửa lỗi "Kiểu hàng: Chỉ có thể chuyển đổi các mảng kích thước-1 thành lỗi Python Scalar" mà chủ yếu xảy ra khi sử dụng thư viện
import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = vector[y]
print[x]
# [2, 4, 6, 8]
1.Điều gì gây ra lỗi import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = vector[y]
print[x]
# [2, 4, 6, 8]
3 trong Python?
import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = vector[y]
print[x]
# [2, 4, 6, 8]
Có thể chuyển đổi các mảng "Kiểu hàng: Chỉ có thể chuyển đổi các mảng Kích thước-1 thành lỗi Python Scalar" khi chúng ta chuyển trong một mảng sang một phương thức chỉ chấp nhận một tham số.
Đây là một ví dụ:
import numpy as np
y = np.array[[1, 2, 3, 4]]
x = np.int[y]
print[x]
# TypeError: only size-1 arrays can be converted to Python scalars
Mã ở trên ném "Mảng kích thước-1 có thể được chuyển đổi thành lỗi vô hướng Python" vì chúng tôi đã chuyển mảng
import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = vector[y]
print[x]
# [2, 4, 6, 8]
4 sang phương thức import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = vector[y]
print[x]
# [2, 4, 6, 8]
5 numpy. Phương thức chỉ có thể chấp nhận một tham số.Trong phần tiếp theo, bạn sẽ thấy một số giải pháp cho lỗi này.
Có hai giải pháp chung để sửa lỗi "TypeError: Chỉ có thể chuyển đổi các mảng kích thước-1 thành lỗi vô hướng Python".
Giải pháp số 1 - Sử dụng hàm import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = vector[y]
print[x]
# [2, 4, 6, 8]
6
import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = vector[y]
print[x]
# [2, 4, 6, 8]
Hàm
import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = vector[y]
print[x]
# [2, 4, 6, 8]
6 có thể chấp nhận một chuỗi/một mảng làm tham số của nó. Khi được in ra, nó trả về một mảng.Đây là một ví dụ:
import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = vector[y]
print[x]
# [2, 4, 6, 8]
Mã ở trên ném "Mảng kích thước-1 có thể được chuyển đổi thành lỗi vô hướng Python" vì chúng tôi đã chuyển mảng
import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = vector[y]
print[x]
# [2, 4, 6, 8]
4 sang phương thức import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = vector[y]
print[x]
# [2, 4, 6, 8]
5 numpy. Phương thức chỉ có thể chấp nhận một tham số.Trong phần tiếp theo, bạn sẽ thấy một số giải pháp cho lỗi này.
Có hai giải pháp chung để sửa lỗi "TypeError: Chỉ có thể chuyển đổi các mảng kích thước-1 thành lỗi vô hướng Python".
Giải pháp số 1 - Sử dụng hàm
import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = vector[y]
print[x]
# [2, 4, 6, 8]
6Hàm import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = vector[y]
print[x]
# [2, 4, 6, 8]
6 có thể chấp nhận một chuỗi/một mảng làm tham số của nó. Khi được in ra, nó trả về một mảng.
import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = vector[y]
print[x]
# [2, 4, 6, 8]
Trong ví dụ trên, chúng tôi đã tạo một biến
import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = vector[y]
print[x]
# [2, 4, 6, 8]
8 sẽ "vector hóa" bất kỳ tham số nào được truyền cho nó: import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = vector[y]
print[x]
# [2, 4, 6, 8]
9.import numpy as np
y = np.array[[2, 4, 6, 8]]
x = np.array[list[map[np.int_, y]]]
print[x]
# [2, 4, 6, 8]
Sau đó, chúng tôi đã tạo một mảng và lưu trữ nó trong biến
import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = vector[y]
print[x]
# [2, 4, 6, 8]
4: import numpy as np
y = np.array[[2, 4, 6, 8]]
x = np.array[list[map[np.int_, y]]]
print[x]
# [2, 4, 6, 8]
1.Sử dụng biến import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = vector[y]
print[x]
# [2, 4, 6, 8]
8 mà chúng tôi đã tạo ban đầu, chúng tôi đã vượt qua mảng import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = vector[y]
print[x]
# [2, 4, 6, 8]
4 dưới dạng tham số: import numpy as np
y = np.array[[2, 4, 6, 8]]
x = np.array[list[map[np.int_, y]]]
print[x]
# [2, 4, 6, 8]
4.
import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = vector[y]
print[x]
# [2, 4, 6, 8]
import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = vector[y]
print[x]
# [2, 4, 6, 8]
import numpy as np
y = np.array[[2, 4, 6, 8]]
x = np.array[list[map[np.int_, y]]]
print[x]
# [2, 4, 6, 8]
Khi được in ra, chúng tôi đã nhận được mảng -
import numpy as np
y = np.array[[2, 4, 6, 8]]
x = np.array[list[map[np.int_, y]]]
print[x]
# [2, 4, 6, 8]
5.Giải pháp số 2 - Sử dụng hàm
import numpy as np
y = np.array[[2, 4, 6, 8]]
x = np.array[list[map[np.int_, y]]]
print[x]
# [2, 4, 6, 8]
6import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = y.astype[int]
print[x]
# [2 4 6 8]
Hàm import numpy as np
y = np.array[[2, 4, 6, 8]]
x = np.array[list[map[np.int_, y]]]
print[x]
# [2, 4, 6, 8]
6 chấp nhận hai tham số trong trường hợp này - phương thức numpy và mảng.
import numpy as np
y = np.array[[2, 4, 6, 8]]
x = np.array[list[map[np.int_, y]]]
print[x]
# [2, 4, 6, 8]
Trong ví dụ trên, chúng tôi lồng chức năng
import numpy as np
y = np.array[[2, 4, 6, 8]]
x = np.array[list[map[np.int_, y]]]
print[x]
# [2, 4, 6, 8]
6 theo phương thức import numpy as np
y = np.array[[2, 4, 6, 8]]
x = np.array[list[map[np.int_, y]]]
print[x]
# [2, 4, 6, 8]
9 để chúng tôi nhận được mảng được trả lại như một danh sách chứ không phải đối tượng bản đồ.Giải pháp số 3 - Sử dụng phương pháp
import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = y.astype[int]
print[x]
# [2 4 6 8]
0Chúng ta có thể sử dụng phương pháp
import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = y.astype[int]
print[x]
# [2 4 6 8]
0 để chuyển đổi một mảng numpy thành số nguyên. Điều này sẽ ngăn chặn các mảng "Kiểu hàng: Chỉ có thể chuyển đổi các mảng kích thước-1 thành lỗi vô hướng Python".Đây là cách:
Bản tóm tắt
Tôi có mã python như vậy:
import numpy as np
import matplotlib.pyplot as plt
def f[x]:
return np.int[x]
x = np.arange[1, 15.1, 0.1]
plt.plot[x, f[x]]
plt.show[]
Và lỗi đó:
TypeError: only length-1 arrays can be converted to Python scalars
Làm thế nào tôi có thể sửa chữa nó?
Hỏi ngày 17 tháng 4 năm 2016 lúc 18:21Apr 17, 2016 at 18:21
Lỗi "Chỉ có thể chuyển đổi các mảng độ dài-1 thành vô hướng Python" được nâng lên khi hàm này mong đợi một giá trị duy nhất nhưng bạn vượt qua một mảng thay thế.
import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = y.astype[int]
print[x]
# [2 4 6 8]
6 là bí danh cho import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = y.astype[int]
print[x]
# [2 4 6 8]
7 tích hợp, được không phản đối trong Numpy v1.20. Đối số cho INT nên là một vô hướng và nó không chấp nhận các đối tượng giống như mảng. Nói chung, nếu bạn muốn áp dụng một hàm cho từng phần tử của mảng, bạn có thể sử dụng import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = y.astype[int]
print[x]
# [2 4 6 8]
8:import numpy as np
import matplotlib.pyplot as plt
def f[x]:
return int[x]
f2 = np.vectorize[f]
x = np.arange[1, 15.1, 0.1]
plt.plot[x, f2[x]]
plt.show[]
Bạn có thể bỏ qua định nghĩa của f [x] và chỉ cần truyền hàm
import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = y.astype[int]
print[x]
# [2 4 6 8]
7 cho hàm vectorize: import numpy as np
import matplotlib.pyplot as plt
def f[x]:
return np.int[x]
x = np.arange[1, 15.1, 0.1]
plt.plot[x, f[x]]
plt.show[]
0.Lưu ý rằng
import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = y.astype[int]
print[x]
# [2 4 6 8]
8 chỉ là một hàm tiện lợi và về cơ bản là một vòng lặp. Điều đó sẽ không hiệu quả so với các mảng lớn. Bất cứ khi nào bạn có khả năng, hãy sử dụng các hàm hoặc phương thức thực sự được vector hóa [như import numpy as np
import matplotlib.pyplot as plt
def f[x]:
return np.int[x]
x = np.arange[1, 15.1, 0.1]
plt.plot[x, f[x]]
plt.show[]
2 như @FFT gợi ý].Đã trả lời ngày 17 tháng 4 năm 2016 lúc 18:32Apr 17, 2016 at 18:32
Ayhanayhanayhan
67.1K18 Huy hiệu vàng173 Huy hiệu bạc192 Huy hiệu Đồng18 gold badges173 silver badges192 bronze badges
5
Sử dụng:
x.astype[int]
Đây là tài liệu tham khảo.
Đã trả lời ngày 20 tháng 2 năm 2017 lúc 17:26Feb 20, 2017 at 17:26
FftfftFFT
8098 Huy hiệu bạc15 Huy hiệu Đồng8 silver badges15 bronze badges
1
import numpy as np
import matplotlib.pyplot as plt
def f[x]:
return np.int[x]
x = np.arange[1, 15.1, 0.1]
plt.plot[x, f[x]]
plt.show[]
3 nên giải quyết điều này. Về cơ bản, nó thay đổi cột DataFrame thành một danh sách.
Suraj Rao
29.2k11 Huy hiệu vàng96 Huy hiệu bạc103 Huy hiệu đồng11 gold badges96 silver badges103 bronze badges
Đã trả lời ngày 10 tháng 2 năm 2021 lúc 6:21Feb 10, 2021 at 6:21
Hãy lưu ý những gì được in cho
import numpy as np
import matplotlib.pyplot as plt
def f[x]:
return np.int[x]
x = np.arange[1, 15.1, 0.1]
plt.plot[x, f[x]]
plt.show[]
4. Bạn đang cố gắng chuyển đổi một mảng [về cơ bản chỉ là một danh sách] thành một int. import numpy as np
import matplotlib.pyplot as plt
def f[x]:
return np.int[x]
x = np.arange[1, 15.1, 0.1]
plt.plot[x, f[x]]
plt.show[]
5 sẽ là một mảng của một số duy nhất, mà tôi cho rằng Numpy chỉ coi là một chiếc phao. Bạn có thể làm điều này, nhưng đó không phải là một giải pháp hoàn toàn độc hại.EDIT: Tôi đã tham gia vào một bài đăng một vài tuần trước, nơi Numpy chậm hơn một hoạt động so với tôi mong đợi và tôi nhận ra rằng tôi đã rơi vào một suy nghĩ mặc định rằng Numpy luôn là cách để đi theo tốc độ. Vì câu trả lời của tôi không sạch sẽ như của Ayhan, tôi nghĩ rằng tôi sẽ sử dụng không gian này để cho thấy rằng đây là một trường hợp khác để minh họa rằng
import numpy as np
import matplotlib.pyplot as plt
def f[x]:
return np.int[x]
x = np.arange[1, 15.1, 0.1]
plt.plot[x, f[x]]
plt.show[]
6 chậm hơn khoảng 10% so với xây dựng danh sách ở Python. Tôi không biết đủ về Numpy để giải thích tại sao đây là trường hợp nhưng có lẽ ai đó làm?import numpy as np
import matplotlib.pyplot as plt
import datetime
time_start = datetime.datetime.now[]
# My original answer
def f[x]:
rebuilt_to_plot = []
for num in x:
rebuilt_to_plot.append[np.int[num]]
return rebuilt_to_plot
for t in range[10000]:
x = np.arange[1, 15.1, 0.1]
plt.plot[x, f[x]]
time_end = datetime.datetime.now[]
# Answer by ayhan
def f_1[x]:
return np.int[x]
for t in range[10000]:
f2 = np.vectorize[f_1]
x = np.arange[1, 15.1, 0.1]
plt.plot[x, f2[x]]
time_end_2 = datetime.datetime.now[]
print time_end - time_start
print time_end_2 - time_end
Đã trả lời ngày 17 tháng 4 năm 2016 lúc 18:30Apr 17, 2016 at 18:30
Roganjoshroganjoshroganjosh
12.1k4 Huy hiệu vàng29 Huy hiệu bạc44 Huy hiệu đồng4 gold badges29 silver badges44 bronze badges
Trong trường hợp này, đầu ra phải là một giá trị
import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = y.astype[int]
print[x]
# [2 4 6 8]
7 tròn.import numpy as np
arr = np.array[[2.34, 2.56, 3.12]]
output = np.round[arr].astype[int]
print[output]
# array[[2, 3, 3]]
Đã trả lời ngày 11 tháng 8 năm 2021 lúc 9:32Aug 11, 2021 at 9:32
Niek Tuytelniek Tuytelniek tuytel
7916 Huy hiệu bạc18 Huy hiệu đồng6 silver badges18 bronze badges
import numpy as np
vector = np.vectorize[np.int_]
y = np.array[[2, 4, 6, 8]]
x = vector[y]
print[x]
# [2, 4, 6, 8]
0Sử dụng NP.Array [Danh sách [MAP [NP.INT, X]]] sẽ hội tụ mảng Numpy thành giá trị tỷ lệ và khắc phục sự cố để biết thêm chi tiết, hãy truy cập bài viết chi tiết này.
Đã trả lời ngày 22 tháng 2 lúc 13:58Feb 22 at 13:58