我有一个numpy数组A,它有形状(10,).
我也有,作为此时的,具有形状(10,3,5)一个numpy的数组B中.我想在这两者之间进行乘法以得到C,使得C [0,:,] = A [0]*B [0,:,],C [1] = A [1]*B [1 ,:,]]等
我不想用循环来解决这个问题,其中一个原因是事物的美学,另一个原因是这个代码需要非常通用.我希望用户能够输入几乎任何形状的任何B,只要前导尺寸为10.例如,我希望用户能够放入形状B(10,4).
那么:如何使用numpy实现这种乘法?谢谢.
ADDENDUM:有人问过例子.会变小.假设A是numpy数组[1,2,3],B是numpy数组[[1,2],[4,5],[7,8]].我希望两者的乘法得到[[1,2],[8,10],[21,24]]....
>>> a
array([1, 2, 3])
>>> b
array([[1, 2],
[4, 5],
[7, 8]])
>>> #result
>>> c
array([[ 1, 2],
[ 8, 10],
[21, 24]])
>>>
Run Code Online (Sandbox Code Playgroud) 我想用 .sql 文件中的十进制等效值替换所有十六进制。
我有数十万行这样的行:
INSERT INTO TEST (TEST_ID, VEHICLE_ID, TEST_TYPE_ID, TYPE_ID, NUM_TEST, TEST_DATE, HOUR_START, HOUR_END, ....) VALUES (844, 504, 3, 1, 3, CAST(0x0000991400000000 AS DateTime), CAST(0x00009914008FC76C AS DateTime), CAST(0x0000991400906924 AS DateTime), ......);
Run Code Online (Sandbox Code Playgroud)
我想使用这个 sql 文件来创建 SQLite 数据库。但 SQLite 无法识别十六进制。所以目标是替换文件的所有十六进制。
我找到了这个解决方案来替换特定的十六进制:
decimal = int("0x0000991400000000", 0)
Run Code Online (Sandbox Code Playgroud)
我发现这个解决方案可以用另一个单词替换所有出现的单词:
for line in fileinput.input():
line = re.sub('wordToReplace','newWord', line.rstrip())
Run Code Online (Sandbox Code Playgroud)
我尝试在第二个中使用第一个,但“newWord”需要一个字符串,而我给出一个 int。有什么办法可以做我想做的事?
感谢您的时间 !
我需要找到一种方法来执行此操作,我有一个形状数组
[ 批量大小 , 150 , 1 ]
表示batch_size的整数序列,每个序列有150个元素长,但在每个序列中添加了很多零,以便使所有序列具有相同的长度。我需要找到每个序列的最后一个非零元素,并将其放入一个数组中,该数组的形状必须是 [batch_size] 。我会尝试以下操作:
last = []
for j in range(0 , inputs.shape[0] ):
tnew = np.array( inputs[j][:][0] )
tnew = np.trim_zeros(tnew )
last.append( int(tnew[-1]) )
Run Code Online (Sandbox Code Playgroud)
但我不知道是否有更好的方法来做到这一点,而不必像这样循环每个元素。
感谢您的回答和帮助。
测试数据
a = np.array([[[1],[0],[0],[0],[0],[0]],
[[1],[2],[0],[0],[0],[0]],
[[1],[2],[3],[0],[0],[0]],
[[1],[2],[3],[4],[0],[0]],
[[1],[2],[3],[4],[5],[0]]])
Run Code Online (Sandbox Code Playgroud) 我定义了一个抽象基类BaseRepository
,它充当具有指定 supertype 的项目的集合Foo
。中的便利类方法BaseRepository
被注释/类型暗示用于类型的对象Foo
。这是一个最小的例子:
from abc import ABCMeta, abstractmethod
NoReturn = None
class Foo(object):
pass # simple data holding object
class BaseRepository(object, metaclass=ABCMeta):
# May be filled with subtypes of `Foo` later
_items = None # type: List[Foo]
@classmethod
def get_item(cls) -> Foo:
return cls._items[0]
@classmethod
@abstractmethod
def _load_items(cls) -> NoReturn:
pass
Run Code Online (Sandbox Code Playgroud)
现在有多个静态实现(例如SubRepository
),每个实现都应该使用它们自己的项目类型(例如Bar
),它们是原始泛型类型的子类Foo
。
class Bar(Foo):
pass # Must implement Foo in order for BaseRepository's methods to work …
Run Code Online (Sandbox Code Playgroud) 我正在实施和测试这个SO问题的答案-
给定一个整数数组,找到数组中所有有序元素对的数量,其总和位于给定范围[a,b]
最赞成(当前)的答案仅提供应该为O(NlogN)的算法的文本描述:
对数组进行排序...... 对于数组中的每个元素x:考虑元素后面的数组切片.在[a - x]的数组切片上进行二进制搜索,将其称为y0.如果未找到完全匹配,请将最接近的匹配大于[a - x]视为y0.只要x + y <= b,就从y0向前输出所有元素(x,y)....如果您只需要计算对数,可以在O(nlogn)中进行.修改上述算法,以便搜索[b - x](或下一个较小的元素).
我的实施:
import bisect
def ani(arr, a, b):
# Sort the array (say in increasing order).
arr.sort()
count = 0
for ndx, x in enumerate(arr):
# Consider the array slice after the element
after = arr[ndx+1:]
# Do a binary search on this array slice for [a - x], call it y0
lower = a - x
y0 = bisect.bisect_left(after, lower) …
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个脚本,它会自动删除特定文件夹中的所有临时文件,我注意到这个脚本也会删除该文件夹中的所有文本文件.任何人都可以解释为什么这样做?
import os
path = 'C:\scripts27'
for root, dirs, files in os.walk(path):
for currentFile in files:
print "processing file: " + currentFile
extensions=('.tmp')
if any(currentFile.lower().endswith(ext) for ext in extensions):
os.remove(os.path.join(root, currentFile))
Run Code Online (Sandbox Code Playgroud)
我在Windows 8.1 PC 64位上使用Python 2.7.10运行此脚本.
谢谢!
我是python的初学者。
我正在尝试从此字典中删除所有“noone:0”,因此它看起来与下面相同,但没有任何“noone:0”:
G = {'a': {'b': 10, 'c': 8, 'd': 3, 'noone': 0, 'e': 3}, 'f': {'g': 7, 'c': 5, 'h': 5, 'i': 2, 'j': 4, 'noone': 0, 'l': 2}}
Run Code Online (Sandbox Code Playgroud)
我搜索并找到了我应该实现它的所有方法,但找不到有效的方法。我试过这个无济于事:
for i in G:
if str(G[i]) == 'noone':
G.pop('noone', None)
Run Code Online (Sandbox Code Playgroud) 考虑这样的代码片段:
class ABC:
def method1(self, word):
...
def method2(self):
str_list = ['this', 'is', 'a', 'list', 'of', 'strings']
pdb.set_trace()
str_list = [self.method1(word) for word in str_list] ...(1)
obj = ABC()
obj.method2()
Run Code Online (Sandbox Code Playgroud)
在断点处,当我将命令复制粘贴(1)
到 pdb 调试器 shell 中时,它无法执行该命令,而是给出了错误:
*** NameError: name 'self' is not defined
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我理解这种行为 - 它与列表理解和类对象的范围有关吗?
PS C:\fooProjects> & C:/Python38/python.exe c:/fooProjects/tmp.py
> c:\fooprojects\tmp.py(38)method2()
-> str_list = [self.method1(word) for word in str_list]
(Pdb) [self.method1(word) for word in str_list]
*** NameError: name 'self' is not defined
(Pdb)
Run Code Online (Sandbox Code Playgroud) 我试图定义一个函数,可以从一个链接的int列表中获取最小值.
Given Function(not allowed to be modified):
class LN:
def __init__(self,value,next=None):
self.value = value
self.next = next
def list_to_ll(l):
if l == []:
return None
front = rear = LN(l[0])
for v in l[1:]:
rear.next = LN(v)
rear = rear.next
return front
Run Code Online (Sandbox Code Playgroud)
函数list_to_ll将普通列表转换为链表:
A recursive function I am trying to define:
def get_min(ll):
if ll == None:
return None
else:
if ll.value < ll.next.value:
return ll.value
return get_min(ll.next)
Run Code Online (Sandbox Code Playgroud)
例如:
get_min(list_to_ll([7, 3, 5, 2, 0]))--> 0
Run Code Online (Sandbox Code Playgroud)
但我的功能给了我:
RuntimeError: maximum recursion depth …
Run Code Online (Sandbox Code Playgroud) weatherType = raw_input('Enter a weather type: ')
while (weatherType != "WINDDIRECTION") or (weatherType != "WINDSPEED") or (weatherType != "AIRTEMPERATURE") or (weatherType != "WAVEHEIGHT") or (weatherType != "AIRPRESSURE"):
print "Sorry, invalid input. Please enter AIRTEMPERATURE, AIRPRESSURE, WAVEHEIGHT, WINDSPEED, or WINDDIRECTION for a city and either WINDDIRECTION, WINDSPEED, or AIRTEMPERATURE for an off shore bouy"
weatherType = raw_input('Enter a weather type: ')
Run Code Online (Sandbox Code Playgroud)
好了,所以用这个循环中,我试图让用户输入要么WINDDIRECTION
,WINDSPEED
,AIRTEMPERATURE
,WAVEHEIGHT
,或AIRPRESSURE
.但是,即使用户输入这5个选项中的1个,我的代码仍然会进入while循环.我不知道发生了什么事.我知道我可以使用for循环(对于["WINDDIRECTION",....]中的x)但是for循环只能查看他们的输入是否是第一次是正确的,如果他们再输入错误的答案代码将继续
我正在VM
通过Via工作PuTTY
。
通过终端,我想打开,编辑和保存.py
文件。我该怎么做?
谢谢您的帮助。
我正在处理具有约 4 亿行和 3 列的文件。前两列是字母数字字符串,而最后一列是数字。像这样的东西:
NM_001011874.1,NM_011441.4,-0.131672299779153
Run Code Online (Sandbox Code Playgroud)
我有多个这样的文件,它们的行数和 3 列数大致相同。这些不一定基于 3 列中的任何一列进行排序。我正在尝试根据前两列的组合来组合这些文件。例如:
File 1
NM_001011874.1,XR_104537.1,-0.929524370261122
NM_001011874.1,XM_003084433.1,-0.603098764428879
File 2
NM_001011874.1,XR_104537.1,-0.11254525414
NM_001011874.1,NM_005040.1,-0.20509876488
File 3
NM_001011874.1,XR_104537.1,-0.41254525414
NM_001011874.1,NM_005040.1,-0.60509876488
Run Code Online (Sandbox Code Playgroud)
我想要做的是通过使用前两列中的值组合来创建一个键,然后从该对的第三列中检索相应的值。我得到的最终输出是:
Output2
NM_001011874.1,XR_104537.1,-0.11254525414,-0.929524370261122,-0.41254525414
NM_001011874.1,NM_005040.1,-0.20509876488,,-0.60509876488
Run Code Online (Sandbox Code Playgroud)
我正在使用 awk 执行上述操作:
awk -F',' 'NR==FNR{a[$1,$2]=$3;next}{$4=a[$1,$2];print}' OFS=',' file1.txt file2.txt
Run Code Online (Sandbox Code Playgroud)
我为任务分配了 256GB。使用上述命令通过组合两个文件来生成输出大约需要 90 分钟,其中每个文件有大约 4 亿行和 3 列。输出文件再次有大约 4 亿行但有 4 列。每添加一列,生成输出文件所花费的时间就会增加。
我是按顺序进行的,即合并 file1 和 file2 以生成具有 4 列的 output1。然后合并 file3 和 output1 以生成具有 5 列的 output2,然后将 file4 和 output2 合并以生成具有 6 列的 output3,依此类推,直到我得到具有 22 列的最终输出。
我想知道在 Python 或 Perl 中执行此操作在速度和自动化方面是否更有效?我有大约 20 个这样的文件,每个文件有 3 …
python ×11
numpy ×2
algorithm ×1
arrays ×1
awk ×1
collections ×1
command-line ×1
dictionary ×1
generics ×1
hex ×1
inheritance ×1
os.path ×1
os.walk ×1
pdb ×1
performance ×1
perl ×1
python-2.7 ×1
replace ×1
scope ×1
search ×1
terminal ×1
types ×1
while-loop ×1