作为Python的第一个练习,我正在尝试使用循环编写程序来查找素数.一切都与for循环一起工作所以我试图使用while循环.这有效,但程序返回一些不正确的数字.
import math
# looking for all primes below this number
max_num = int(input("max number?: "))
primes = [2] # start with 2
test_num = 3 # which means testing starts with 3
while test_num < max_num:
i = 0
# It's only necessary to check with the primes smaller than the square
# root of the test_num
while primes[i] < math.sqrt(test_num):
# using modulo to figure out if test_num is prime or not
if (test_num % primes[i]) == 0: …Run Code Online (Sandbox Code Playgroud) 我有以下输入数据列表
# Input
aa = [
[[1.672, 15.404106853988145], [1.672, 15.09023236677281],
[1.672, 14.326477347851142], [1.672, 15.000459521550175],
[1.672, 13.151534525114727]],
[[1.071, 15.37432077372023], [1.071, 14.702364761334275],
[1.071, 14.285562362585377], [1.071, 14.968122718390234],
[1.071, 13.429261607006364]],
[[1.278, 15.37737475413325], [1.278, 15.009362745118009],
[1.278, 14.328183750447181], [1.278, 14.98111244150097],
[1.278, 13.553743514980896]],
[[1.071, 15.37901291568889], [1.071, 14.703489628076182],
[1.071, 14.290814520089102], [1.071, 14.977559474289448],
[1.071, 13.128128537587324]]
]
Run Code Online (Sandbox Code Playgroud)
我需要转变成
# Output
bb = [
[[1.672, 1.071, 1.278, 1.071],
[15.404106853988145, 15.37432077372023, 15.37737475413325,
15.37901291568889]],
[[1.672, 1.071, 1.278, 1.071],
[15.09023236677281, 14.702364761334275, 15.00936274511801,
14.703489628076182]],
[[1.672, 1.071, 1.278, 1.071],
[14.326477347851142, 14.285562362585377, 14.328183750447181,
14.290814520089102]],
[[1.672, 1.071, 1.278, …Run Code Online (Sandbox Code Playgroud) 给定一个一维数组
import numpy as np
arr = np.array([0, 0, 0, 0, 0, 0, 8, 83, 120, 111, 31, 37, 10, 0, 0, 0, 0, 0, 0, 0])
Run Code Online (Sandbox Code Playgroud)
我可以使用删除前导/尾随零numpy.trim_zeros
np.trim_zeros(arr)
array([ 8, 83, 120, 111, 31, 37, 10])
Run Code Online (Sandbox Code Playgroud)
但我还需要已删除元素的索引,或者至少是最极端元素的索引。在上述情况下,这些将是
[5, 13]
Run Code Online (Sandbox Code Playgroud)
我可以通过for循环检查每个元素来查看之前处理的元素是否是0并在该条件为 False 时停止,但我想知道是否已经开发了一个numpy可以完成此操作的函数。
给定一个整数数组,我需要找到存储在不同数组中的许多元素的索引。这是:
import numpy as np
a1 = np.array([ 4, 5, 6, 1, 2, 3, 7, 86, 9, 15])
a2 = np.array([ 2, 3, 5, 6, 9])
Run Code Online (Sandbox Code Playgroud)
a1我的初始元素数组在哪里,a2是包含我需要在a1.
在这种情况下,结果应该是:
a3 = ([4, 5, 1, 2, 8])
Run Code Online (Sandbox Code Playgroud)
这似乎是一个相当简单的操作,但我一直无法弄清楚如何去做。
考虑一个简单的绘图,其中绘制了两个不同的群体:
我想添加两个单独的 y 标签,一个用于顶部人口,另一个用于同一左侧 y 轴上的下方人口。我见过的所有类似问题都涉及两个单独轴上的标签(即:一个在左边,一个在右边),这不是我需要的。
我怎样才能做到这一点?
import numpy as np
import matplotlib.pyplot as plt
N = 50
a = np.random.uniform(100., 120., N)
b = np.random.uniform(10., 20., N)
plt.scatter(range(N), a)
plt.scatter(range(N), b)
plt.show()
Run Code Online (Sandbox Code Playgroud)
这个问题不是关于向图例添加标签,如此处所述。
该aa名单是我的输入,以及bb列表我期望的输出.操作相当简单(将每个元素更改aa为字符串,附加一些字符,同时保持原始形状),但我这样做的方式似乎不必要地复杂化.
是否有更好的(更多Pythonic)方式来做到这一点?
aa = [0, 5, 6, [8], 3, [9, 2]]
bb = []
for e1 in aa:
if type(e1) == list:
bb2 = []
for e2 in e1:
bb2.append('sss' + str(e2))
bb.append(bb2)
else:
bb.append('sss' + str(e1))
print(bb)
['sss0', 'sss5', 'sss6', ['sss8'], 'sss3', ['sss9', 'sss2']]
Run Code Online (Sandbox Code Playgroud) 我需要Edit - Wrap - Wrap at XX characters在Sublime Text 3中为命令设置快捷方式。
我知道AutoWrap程序包,但是当您编写将长行分割为新行时,该包有效。
在Sublime Text 3中添加Word Wrap Toggle快捷键的文章介绍了如何添加快捷方式而不破坏长行,而只是将它们包装起来。
我需要以80个字符包装,但是如果可以设置字符数,那将是很棒XX的。
matplotlib.axes.Axes.quiver文档指出:
箭头轮廓
线宽和边缘颜色可用于自定义箭头轮廓
然而,一个简单的测试代码表明它edgecolor显然什么也没做。我错过了什么吗?
import matplotlib.pyplot as plt
import numpy as np
X = np.arange(-3, 3, 1)
Y = np.arange(-3, 3, 1)
U, V = np.meshgrid(X, Y)
plt.quiver(X, Y, U, V, edgecolor='r')
plt.show()
Run Code Online (Sandbox Code Playgroud)
这是我正在尝试做的MWE:
lis = []
# Initialize empty list
for i in range(2):
lis.append([[0]]*2)
# First print
print lis
# Second print
print lis[0][1][0]
# Modify item
lis[0][1][0] += 1
# Third print
print lis
Run Code Online (Sandbox Code Playgroud)
第一个 print返回列表[[[0], [0]], [[0], [0]]]是正确的,我有一个第一个列表,它由几个列表组成,每个列表也由几个列表组成(我需要这个嵌套列表,我正在做什么).所述第二 print返回索引0和1中的项目作为0这也是正确的.但第三个 print显示新列表为:
[[[1], [1]], [[0], [0]]]
Run Code Online (Sandbox Code Playgroud)
代替:
[[[0], [1]], [[0], [0]]]
Run Code Online (Sandbox Code Playgroud)
这就是我的目标.我究竟做错了什么?
我有一个单行if语句,看起来像这样:
var = var if var < 1. else 1.
Run Code Online (Sandbox Code Playgroud)
第一部分var = var看起来有点难看,我敢打赌,有更多的pythonic方式来说这个.
python ×9
list ×3
arrays ×2
matplotlib ×2
numpy ×2
if-statement ×1
primes ×1
python-2.x ×1
python-3.x ×1
sublimetext3 ×1
while-loop ×1